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.