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

Reply via email to