Re: [Templates] Pass through perl?
[prev]
[thread]
[next]
[Date index for 2004/07/20]
On Tue, 2004-07-20 at 04:30, Dave Howorth wrote:
> Chris Huegle wrote:
> > [% PERL %] is close, but the main place where we're having the problems
> > are within [% IF %] statements.
> >
> > >= works, but 'ge' and 'gt' (text comparitors) don't work.
>
> In TT '>=' *is* a text comparison operator!
>
It doesn't seem to be.
[% IF 'bar' >= 'foo' %]
translates to
if ('bar' >= 'foo') {
which returns true, since 1 == 1.
> > Another thing that we had problems with were '-' in hash keys.
> > HASH.gold-1 doesn't work.
>
> Well if you look at it, that's obviously an expression 'the gold field
> from HASH minus 1. The syntax doesn't 'work' in Perl either. Why would
> you expect it to 'work' here?
In PERL, you quote it: $FOO->{'gold-1'}. You might notice in the
examples I used below, it is quoted and 'works' in Perl. In TT,
FOO.'gold-1' is also invalid and there doesn't seem to be a way to quote
it.
> You have two solutions, change the keys
> or assign them to variables. Both can be automated, so why worry?
>
The extensiveness of the systems involed make changing it costly.
Assigning them to variables increases the complexity significantly,
IMO. That is what we are doing now, and I'm not particulary happy with
that.
> It seems to me that a quiet weekend with the Badger book would be
> beneficial.
>
You should try to stay nice when there's a chance you've misunderstood
something. You'll have more friends that way.
> > What we found to work in TT templates:
> > [% gold__1 = 'gold-1' %]
> > [% IF my_gt(GLOBAL.PRODUCT_DATE.${gold__1},current_date) > 0 %]
>
> Why not
> [% SET foo = 'gold-1'; IF GLOBAL.PRODUCT_DATE.$foo > current_date %]
>
That is cleaner, yes, although marginally.
> > What I'd like is something like this:
> > [% IF {% $self->{GLOBAL}->{PRODUCT_DATE}->{'gold-1'} %} {% gt % }
> > current_date %]
>
> So (untested):
>
> [% PERL %] $stash->set(foo =>
> $self->{GLOBAL}->{PRODUCT_DATE}->{'gold-1'} gt $current_date
> ) [% END ; IF foo %]
>
> which again is just an automatic template transformation away.
>
That would also be a functional hack.
>
> > So, basically, I want the full capabilities of PERL available to me in
> > IF statements..
>
> So why not use Perl? You must believe TT is better for your application
> instead of your existing system, to make it worth doing the transition.
>
We thought it'd be, but didn't encounter a lot of the limitations until
after our testing.
--Chris
_______________________________________________
templates mailing list
templates@xxxxxxxxxxxxxxxx.xxx
http://lists.template-toolkit.org/mailman/listinfo/templates