On Tue, Mar 1, 2011 at 1:14 PM, Bill Ward <[email protected]> wrote: > On Tue, Mar 1, 2011 at 1:04 PM, Sean McAfee <[email protected]> wrote: > >> On Tue, Mar 1, 2011 at 12:48 PM, Bill Ward <[email protected]> wrote: >> >>> I know we can use a filter to convert to lower case, [% foo | lower %] >>> but that only works for output. What I want is to do a case-insensitive [% >>> IF %] test, and normally in Perl I would just lc($foo) and compare that to >>> the desired value. But how to do that in a template? >>> >>> >> You can pass in any subroutines you like as template variables: >> >> Template->new->process( >> \'[% IF eq_nocase("xxx", "XXX"); THEN; "yes"; ELSE; "no"; END; %]', >> { eq_nocase => sub { lc $_[0] eq lc $_[1] } } >> ); >> >> > Yes but surely there's a better way? This is a pretty fundamental feature > of any language. > > Well, it depends on what you mean by "better." This approach is probably minimally verbose on the template side.
For a pure-TT solution, you could use a temporary variable: [% temp = BLOCK; FILTER lc; "XXX"; END; END; IF temp == "xxx"; ... %]
_______________________________________________ templates mailing list [email protected] http://mail.template-toolkit.org/mailman/listinfo/templates
