The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Text::MustacheTemplate - mustache template engine

SYNOPSIS

    use Text::MustacheTemplate;
    # local $Text::MustacheTemplate::OPEN_DELIMITER = '<%';
    # local $Text::MustacheTemplate::CLOSE_DELIMITER = '%>';

    my $rendered = Text::MustacheTemplate->render('* {{variable}}', { variable => 'foo' }); # => "* foo"

    my $template = Text::MustacheTemplate->parse('* {{variable}}');
    $rendered = $template->({ variable => 'foo' }); # => "* foo"
    $rendered = $template->({ variable => 'bar' }); # => "* bar"

DESCRIPTION

Text::MustacheTemplate is mustache template engine written in Pure Perl.

All features of Mustache Template are implemented. (e.g. inheritance, lambda, etc..) And it is passed all mustache/spec test cases.

METHODS

parse

Parses the template text. Returns a subroutine reference. The subroutine receives one argument and processes the parsed template using the context variable specified in the argument.

    my $template = Text::MustacheTemplate->parse('* {{variable}}');
    $rendered = $template->({ variable => 'foo' }); # => "* foo"

This method is suitable for rendering the same template multiple times.

render

Render the template text using the context. It returns a rendered text.

    my $rendered_text = Text::MustacheTemplate->render($template_text, $context);

This method is suitable when the same template is rarely used.

VARIABLES

Text::MustacheTemplate changes its behavior according to the following variables. By using local, this change can be localized.

$OPEN_DELIMITER

This is the delimiter that opens the tag. The default value is "{{".

$CLOSE_DELIMITER

This is the delimiter that closes the tag. The default value is "}}".

%REFERENCES

This is references to other parsed templates. It's used by inheritance or partial template feature.

$LAMBDA_TEMPLATE_RENDERING

When this flag is truthy, lambda template rendering is enabled. The default value is falsey.

BENCHMARK

    =============================
    parse
    =============================
    Benchmark: running Template::Mustache, Text::MustacheTemplate for at least 10 CPU seconds...
    Template::Mustache: 10 wallclock secs (10.36 usr +  0.00 sys = 10.36 CPU) @ 748.26/s (n=7752)
    Text::MustacheTemplate: 11 wallclock secs (10.49 usr +  0.02 sys = 10.51 CPU) @ 9560.04/s (n=100476)
                             Rate     Template::Mustache Text::MustacheTemplate
    Template::Mustache      748/s                     --                   -92%
    Text::MustacheTemplate 9560/s                  1178%                     --
    =============================
    render
    =============================
    Benchmark: running Template::Mustache, Text::MustacheTemplate for at least 10 CPU seconds...
    Template::Mustache: 11 wallclock secs (10.52 usr +  0.01 sys = 10.53 CPU) @ 729.34/s (n=7680)
    Text::MustacheTemplate: 11 wallclock secs (10.61 usr +  0.02 sys = 10.63 CPU) @ 30540.55/s (n=324646)
                              Rate     Template::Mustache Text::MustacheTemplate
    Template::Mustache       729/s                     --                   -98%
    Text::MustacheTemplate 30541/s                  4087%                     --
    =============================
    render (contextual optimization)
    =============================
    Benchmark: running disabled for at least 10 CPU seconds...
      disabled: 11 wallclock secs (10.51 usr +  0.02 sys = 10.53 CPU) @ 8941.41/s (n=94153)
                Rate disabled  enabled
    disabled  8941/s       --     -71%
    enabled  30541/s     242%       --
    =============================
    render(cached)
    =============================
    Benchmark: running Template::Mustache, Text::MustacheTemplate for at least 10 CPU seconds...
    Template::Mustache: 10 wallclock secs (10.40 usr +  0.02 sys = 10.42 CPU) @ 49247.02/s (n=513154)
    Text::MustacheTemplate: 11 wallclock secs (10.55 usr +  0.02 sys = 10.57 CPU) @ 230312.68/s (n=2434405)
                               Rate     Template::Mustache Text::MustacheTemplate
    Template::Mustache      49247/s                     --                   -79%
    Text::MustacheTemplate 230313/s                   368%                     --

SEE ALSO

Template::Mustache Mustache::Simple

LICENSE

Copyright (C) karupanerura.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHOR

karupanerura <karupa@cpan.org>