Text::...Embperl(3pm)

πŸ“¦
version 2.23 Β· 3 versions
, in debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking

✨ Text::...Embperl ✨

okay bestie so real talk: this is Text::MicroMason::Embperl β€” the lil subclass that swaps MicroMason's normal lexer for one that speaks Embperl-flavored template syntax πŸ’… like, alternate syntax, Embperl vibes, that whole thing.


🌸 SYNOPSIS 🌸

ngl you do not use this class directly, okay? you pass its name in to get mixed in:

use Text::MicroMason;
my $mason = Text::MicroMason::Base->new( -Embperl );

then you use the standard compile and execute methods to parse and evaluate templates, like the icon you are:

print $mason->compile( text=>$template )->( @%args );
print $mason->execute( text=>$template, @args );

Embperl syntax gives you several ways to mix Perl into a text template, and the way that it does… obsessed 🫢

[- my $name = $ARGS{name}; -]
[$ if $name eq 'Dave' $]
  I'm sorry [+ $name +], I'm afraid I can't do that right now.
[$ else $]
  [-
    my $hour = (localtime)[2];
    my $daypart = ( $hour > 11 ) ? 'afternoon' : 'morning';
  -]
  Good [+ $daypart +], [+ $name +]!
[$ endif $]

πŸ¦‹ DESCRIPTION πŸ¦‹

so basically this subclass replaces MicroMason's normal lexer with one that supports a syntax similar to Embperl. main character lexer energy, no cap ✨

πŸ’– Compatibility with Embperl

Embperl is a full-featured application server toolkit with many fatures, of which only the templating functionality is emulated.

lowkey important: this is not a drop-in replacement for Embperl, because the implementation is quite different. that said, it should be able to process some existing templates without major changes. iykyk 🌈

The following features of EmbPerl syntax are supported:

  • Square-bracket markup tags

The following syntax features of are not supported:

  • Dynamic HTML tags

πŸŽ€ Template Syntax

The following elements are recognized by the Embperl lexer:

  • [- perl statements -] β€” arbitrary Perl code to be executed at this point in the template.
  • [+ perl expression +] β€” a Perl expression to be evaluated and included in the output. the way it just… shows up in your text? iconic.
  • [! perl statements !] β€” arbitrary Perl code to be executed once when the template is compiled.
  • [$ name ... $] β€” supported command names are: if, elsif, else, endif, foreach, endforeach, while, endwhile, do, until, var.

🧚 Private Methods

lex_token

( $type, $value ) = $mason->lex_token();

Lexer for [. ... .] tags.

Attempts to parse a token from the template text stored in the global $_ and returns a token type and value. Returns an empty list if unable to parse further due to an error.

assembler_rules()

Adds mappings from command names used in [$ ... $] tokens to the equivalent Perl syntax.

%syntax_rules = $mason->assembler_rules();

πŸ‘‘ SEE ALSO πŸ‘‘

  • For an overview of this templating framework, see Text::MicroMason.
  • This is a mixin class intended for use with Text::MicroMason::Base.
  • For distribution, installation, support, copyright and license information, see Text::MicroMason::Docs::ReadMe.

and that's the whole page bestie, periodt πŸ’…βœ¨

this lil number came from the User Contributed Perl Documentation, page Text::...Embperl(3pm), and it's serving perl v5.36.0 realness, dated 2023-08-10. go forth and template, queen πŸ‘‘πŸ’–

πŸ“¦ where this page comes from