Re: custom vmethods
Tom Molesworth <tom-UE50auxAeIt4LjgWlUEQQwC/[email protected]> Wed, 24 Feb 2016 13:01:22 +0000
| Newsgroups | gmane.comp.lang.perl.modules.template-toolkit |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format.
--------------090807050809050501070203
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: 7bit
Hi Dave,
On 24/02/16 12:44, Dave Howorth wrote:
> I'm trying to define a custom vmethod but not succeeding.
>
> I tried using the way described in the manual and also by calling
> define_vmethod. Both ways appear to have set up methods in the
> Template::Stash::SCALAR_OPS hashref but neither of them appears to
> work, even with a very simple body. Any clues to what I'm doing wrong
> gratefully received!
>
> In the perl:
>
> use Template::Stash;
> $Template::Stash::SCALAR_OPS->{uniprot_is_obsolete} =
> sub {
> return 42;
> };
>
> sub forty_two { return 42; }
> Template::Stash->define_vmethod('scalar', 'forty_two', &forty_two);
>
> warn join ' ', keys %$Template::Stash::SCALAR_OPS, "\n";
Those look fine - are you sure that [% representative %] is defined as a
scalar rather than a hashref/arrayref/object?
Attached example test script for the two methods works for me on
Template 2.26.
cheers,
Tom
--------------090807050809050501070203
Content-Type: application/x-perl;
name="tt2-vmethods.pl"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="tt2-vmethods.pl"
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More;
use Template;
use Template::Stash;
my $tt = Template->new;
$Template::Stash::SCALAR_OPS->{ custom } = sub { 42 };
{
$tt->process(\q{[% x.custom %]}, { x => 123 }, \my $out) or die $tt->error;
is($out, '42', 'had 42 from SCALAR_OPS method');
}
Template::Stash->define_vmethod('scalar', 'forty_three', sub { 43 });
{
$tt->process(\q{[% x.forty_three %]}, { x => 123 }, \my $out) or die $tt->error;
is($out, '43', 'had 43 from define_vmethod');
}
done_testing;
--------------090807050809050501070203
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
templates mailing list
[email protected]
http://mail.template-toolkit.org/mailman/listinfo/templates
--------------090807050809050501070203--