forked from xslate/p5-Text-Xslate
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdynamic_functions.pl
47 lines (38 loc) · 903 Bytes
/
dynamic_functions.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!perl -w
use strict;
use Text::Xslate;
use FindBin qw($Bin);
{
package MyBridge;
use parent qw(Text::Xslate::Bridge);
__PACKAGE__->bridge(
function => {my_func => \&_my_func},
scalar => {my_func => \&_scalar},
hash => {my_func => \&_hash},
array => {my_func => \&_array},
);
sub _scalar {
my $obj = shift;
_my_func(@_)->($obj);
};
sub _hash {
my $obj = shift;
_my_func(@_)->(map {$_, $obj->{$_}} keys %$obj);
};
sub _array {
my $obj = shift;
_my_func(@_)->(@$obj);
};
sub _my_func {
my @outer_args = @_;
sub {
my (@inner_args) = @_;
join(', ', @outer_args, @inner_args) . "\n";
}
}
}
my $tx = Text::Xslate->new(
module => [qw(MyBridge)],
path => $Bin,
);
print $tx->render('dynamic_functions.tx');