Re: MooseX::Templated - pre-CPAN

[email protected] ("Ian Sillitoe")
Newsgroups perl.moose
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.