The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

MooseX::Templated - template-based rendering of Moose objects

SYNOPSIS

    package Farm::Cow;

    use Moose;

    with 'MooseX::Templated';

    has 'spots'   => ( is => 'rw' );
    has 'hobbies' => ( is => 'rw', default => sub { ['mooing', 'chewing'] } );

    sub make_a_happy_noise { "Mooooooo" }

Specify template:

    sub _template { <<'_TT2' }

    This cow has [% self.spots %] spots - it likes
    [% self.hobbies.join(" and ") %].
    [% self.make_a_happy_noise %]!

    _TT2

Or as a separate file:

    # lib/Farm/Cow.tt

Render the object:

    $cow = Farm::Cow->new( spots => '8' );

    print $cow->render();

    # This cow has 8 spots - it likes
    # mooing and chewing.
    # Mooooooo!

Provide options (such as default file location):

    # lib/Farm/Cow.pm

    with 'MooseX::Templated' => {
      template_suffix => '.tt2',
      template_root   => '__LIB__/../root',
    };

    # now looks for
    # root/Farm/Cow.tt2

DESCRIPTION

The MooseX::Templated role provides the consuming class with a method render() which allows template-based rendering of the object.

METHODS

The following methods are provided to the consuming class

template_engine

Returns MooseX::Template::Engine which is the templating engine responsible for rendering the template.

render

Finds the template source, performs the rendering, returns the rendered result as a string.

Note: the location of the template source is affected by (optional) arguments and role configuration (see below for details).

TEMPLATE SOURCE

The template engine will search for the template source in a few different locations: files, methods, inline.

  Farm::Cow->new()->render()

File system

This will look for a template file that relates to the calling package. With default settings, the above example would look for:

  __LIB__/Farm/Cow.tt

Where __LIB__ is the root directory for the modules.

The file path can be affected by configuration options: template_root, template_suffix

Local method in code

Define a local method within the calling package which returns the template source as a string. With default settings, this will look for the method "_template", e.g.

  sub Farm::Cow::_template { ... }

The expected method name is affected by configuration option: template_method_stub.

Inline

Provide the template source directly to the render function (as a reference to the template string).

  Farm::Cow->render( \"Cow goes [% self.moo %]!" );

CONFIGURATION

Defaults about how to find your template files / methods can be provided at role composition:

  with 'MooseX::Templated' => {
    view_class           => 'MooseX::Templated::View::TT',
    template_suffix      => '.tt',
    template_root        => '__LIB__',
    template_method_stub => '_template',
  };

view_class

The class name of the particular template framework being used.

template_suffix

Override the suffix used for the template files (the default is provided by the view_class)

template_root

Override the location where the template files are found. The string "__LIB__" will be replaced by the location of the installed modules, e.g.

  template_root => '__LIB__/../root'

template_method_stub

Override the method name to use when specifying the template source with a local method.

See MooseX::Templated::Engine and MooseX::Templated::View for more information

SEE ALSO

Moose, Template

REPOSITORY

https://github.com/sillitoe/moosex-templated

ACKNOWLEDGEMENTS

Chris Prather (perigrin)

AUTHOR

Ian Sillitoe <isillitoe@cpan.org>

LICENCE AND COPYRIGHT

Copyright (c) 2016, Ian Sillitoe <isillitoe@cpan.org>. All rights reserved.

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