Yeah that sounds like an simple and elegant solution (I haven't tested the
code, but the thought process looks suitable). I had hoped there was something
in TT that I might have overlooked that gives us access to the tokens, etc...
since I only looked under TT's hood for the first time last night. I have to
admit for some reason I wasn't thinking overriding the split_text(). I guess
everyone has right to a blonde moment :-)
I'm going to play with the solution I'm working on now to see if it will work,
and if not, at least I have a new lead I can follow. Thanks Sean!
If anyone else has other ideas, feel free to contribute.
The reasons as to why a particular feature is desired/needed may not be
evident until the need presents itself. This would be one of such times.
Maybe something along the lines (semi-pseudocode):
...
my @all_tags = $parser->tags;
$output .= $_->new->execute() for @tags;
Come to think of this particular example I'd actually put this as part of the
process() so it could properly replace the tags with their corresponding values.
Once my website is ready I can't wait to put up the "Powered by TT" :-) Not to
mention crediting other Perlscripters ! If anyone is interested in further
contributing to the development of perlscript.com, let me know! Ideas,
comments, suggestions, etc... are always welcome.
Milan
Date: Mon, 30 Jun 2008 10:46:17 -0700From: [EMAIL PROTECTED]: [EMAIL
PROTECTED]: Re: [Templates] how do I find all parsed tags?CC: [EMAIL PROTECTED]
Mon, Jun 30, 2008 at 10:11 AM, Blue Eyed Devil <[EMAIL PROTECTED]> wrote:
To reiterate my example: [% TAG %] is a [% TYPE %] that can be [% WORD %] If
I don't pass any vars to process(), there should be a collection, property, or
method I could call that would work something like: $template->process(....);
@all_tags = $template->tags();
I still don't really understand how this is meant to be useful, but you could
capture all of the tag contents by providing a custom Template::Parser object
that overrides the split_text() method.Not-fully-tested code:package
MyParser;our @ISA = qw(Template::Parser);sub split_text { my ($self, $text) =
@_; my $tokens = $self->SUPER::split_text($text); ref eq 'ARRAY' and
++$self->{alltags}{$$_[0]} for @$tokens; return $tokens;}sub tags { my $self
= shift; return keys %{ $self->{alltags} };}And then:my $parser =
MyParser->new;my $template = Template->new(PARSER =>
$parser);$template->process(<whatever>);my @all_tags = $parser->tags;--Sean
_________________________________________________________________
Need to know now? Get instant answers with Windows Live Messenger.
http://www.windowslive.com/messenger/connect_your_way.html?ocid=TXT_TAGLM_WL_Refresh_messenger_062008_______________________________________________
templates mailing list
[email protected]
http://mail.template-toolkit.org/mailman/listinfo/templates