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.