MooseX::Templated-0.01 pushed onto CPAN

http://search.cpan.org/~isillitoe/MooseX-Templated-0.01/lib/MooseX/Templated/Role.pm

Please ignore any code quoted in this thread as some changes to method
names, etc. have been made since then. Hope it is useful - all comments /
suggestions welcome.

Cheers,

Ian


2008/11/18 Ian Sillitoe <[EMAIL PROTECTED]>

>
>
> 2008/11/18 Barry Walsh <[EMAIL PROTECTED]>
>
>> This looks very good... looking forward to seeing it on CPAN.
>>
>
>> A quick question...  is it easy to make it use different template file
>> extension (.tt, .tt2, tt3, .html) and use a different INCLUDE_PATH.    These
>> options make it very easy to then sit on top of current production systems.
>>
>
> Yup, the default path gets built in:
>
>     MX::T::View::build_template_src_path()
>
> This uses 'template_src_base' and 'template_src_ext' set by the particular
> view that you are using (where the default view is MX::T::View::TT). If
> 'template_src_base' isn't set then the path of the current module is used.
> Probably best to set global defaults in your view instance (or your could
> write your own View that implements MX::T:View)
>
>     package Farm::Cow;
>     with 'MooseX::Templated::Role';
>
>     my $cow = Farm::Cow->new();
>     $cow->templated_view->template_src_base( '/my/new/path' );
>     $cow->templated_view->template_src_ext( '.tt2' );
>
>     $cow->render()
>     # /my/new/path/Farm/Cow.tt2
>
>     $cow->render( 'xml')
>     # /my/new/path/Farm/Cow.xml.tt2
>
>     (I'll write some tests to confirm this)
>
> From the MX::T::View pod:
>
> *  build_template_src_path( \%options )
> *
>     Builds the default filename to be used the template source
>
>     Farm::Cow => /path/to/Farm/Cow.tt
>
>     template_src_base  class_name    template_src_ext
>     /path/to/          Farm/Cow      .tt
>
> This is how it all pieces together (thanks again to perigrin for help in
> refactoring)
>
>   MX::T::Role - public interface
>     - has 'template_view'
>         => does 'MX::T::View  (default MX::T::View::TT)
>
>   MX::T::View - backend interface for 'views'
>     - requires 'process'
>     - provides build_source()
>
>   MX::T::View::TT
>     - with 'MooseX::Templated::View'
>     - sets up defaults for particular template system (path/ext)
>     - implements 'process'
>
> I should probably just add all this to the docs :)
>
>
>>
>> BTW.. as previously mentioned.. I think u should use a different default
>> extension to "*.t"... perhaps .tt or .tt2?
>>
>
> Sorry - that was a typo in the docs - I did change the default extension
> for Template files to be ".tt" - thanks for the heads up - I'll be
> committing those changes soon.
>
> Cheers,
>
> Ian
>
>
>>
>> /I3az/
>>
>>
>>
>> Ian Sillitoe wrote:
>>
>>> This is a follow up on a previous thread ("Moose::Role::TTSelf"). With
>>> peregrin's help (and considerable patience - many thanks) - I think
>>> MooseX::Templated is pretty much at the point of pushing to CPAN. I'm
>>> forwarding this to this list in case anyone has any more
>>> comments/suggestions before I tip it over the edge (synopsis appended
>>> below)
>>>
>>> http://code2.0beta.co.uk/moose/svn/MooseX-Templated/
>>>
>>> Cheers,
>>>
>>> Ian
>>>
>>>
>>> =head1 NAME
>>>
>>> MooseX::Templated::Role - Framework to render Moose objects with
>>> templates
>>>
>>> =head1 SYNOPSIS
>>>
>>> Farm/Cow.pm
>>>
>>>    package Farm::Cow;
>>>    use Moose;
>>>    with 'MooseX::Templated::Role';
>>>
>>>    has 'spots'   => ( is => 'rw' );
>>>    has 'hobbies' => ( is => 'rw', default => sub { ['mooing', 'chewing']
>>> } );
>>>
>>>    sub moo { "Moooooooo!" }
>>>
>>> Farm/Cow.t
>>>
>>>    This cow has [% self.spots %] spots. It mostly spends its time
>>>    [% self.hobbies.join(" and ") %]. However, when it is very happy
>>>    it exclaims, "[% self.moo %]!".
>>>
>>> Elsewhere on the Farm...
>>>
>>>    my $cow = Farm::Cow->new( spots => '8' );
>>>
>>>    $cow->render();
>>>
>>>    # This cow has 8 spots. It mostly spends its time
>>>    # mooing and chewing. However, when it is very happy
>>>    # it exclaims, "Moooooooo!".
>>>
>>> Alternatively, back in the cowshed
>>>
>>>    package Farm::Cow;
>>>
>>>    <snip>
>>>
>>>    sub _templated_xml {
>>>        return <<"_XML_TT";
>>>
>>>    <cow sound="[% self.moo | html %]" spots="[% self.spots %]">
>>>
>>>    [%- FOREACH hobby = self.hobbies %]
>>>        <hobby name="[% hobby | html %]"/>
>>>    [%- END %]
>>>
>>>    </cow>
>>>    _XML_TT
>>>    }
>>>
>>> Back out on the farm
>>>
>>>    $cow->render( 'xml' );
>>>
>>>    # <cow sound="Moooooooo" spots="8">
>>>    #    <hobby name="mooing"/>
>>>    #    <hobby name="chewing"/>
>>>    # </cow>
>>>
>>>
>>>
>>
>>
>
>
> --
> Dr Ian Sillitoe
> CATH Team -- http://cathdb.info
>
> "Advice is what we ask for when we already know
> the answer but wish we didn't" -- Erica Jong
>
>


-- 
Dr Ian Sillitoe
CATH Team -- http://cathdb.info

"Advice is what we ask for when we already know
the answer but wish we didn't" -- Erica Jong

Reply via email to