File: data_section.pl

package info (click to toggle)
libtext-xslate-perl 3.5.9-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 2,108 kB
  • sloc: perl: 19,756; ansic: 214; pascal: 182; makefile: 9; cs: 8
file content (76 lines) | stat: -rw-r--r-- 1,722 bytes parent folder | download | duplicates (5)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!perl -w
use strict;

use Text::Xslate;
use Data::Section::Simple qw(get_data_section);

use FindBin qw($Bin);
use Benchmark qw(:all);

use Config; printf "Perl/%vd %s\n", $^V, $Config{archname};
foreach my $mod(qw(Text::Xslate)){
    print $mod, '/', $mod->VERSION, "\n";
}

my $n = shift(@ARGV) || 10;

my $tx1 = Text::Xslate->new(
    path       => [ get_data_section(), "$Bin/template" ],
    cache_dir => ".xslate_cache",
    cache     => 1,
);

my $tx2 = Text::Xslate->new(
    path       => [ get_data_section(), "$Bin/template" ],
    cache_dir => ".xslate_cache",
    cache     => 2,
);


my $vars = {
     books => [(
        { title => 'Islands in the stream' },
        { title => 'Beautiful code' },
        { title => 'Introduction to Psychology' },
        { title => 'Programming Perl' },
        { title => 'Compilers: Principles, Techniques, and Tools' },
     ) x $n],
};

{
    use Test::More;
    plan tests => 2;
    is $tx1->render('list_ds.tx', $vars), $tx1->render('list.tx', $vars)
        or die;
    is $tx2->render('list_ds.tx', $vars), $tx2->render('list.tx', $vars)
        or die;
}

print "Files v.s. __DATA__ with cache => 1 or 2\n";
cmpthese -1 => {
    'file/1' => sub {
        my $body = [$tx1->render('list.tx', $vars)];
        return;
    },
    'file/2' => sub {
        my $body = [$tx2->render('list.tx', $vars)];
        return;
    },
    'vpath/1' => sub {
        my $body = [$tx1->render('list_ds.tx', $vars)];
        return;
    },
    'vpath/2' => sub {
        my $body = [$tx2->render('list_ds.tx', $vars)];
        return;
    },
};

__DATA__
@@ list_ds.tx
List:
: for $data ->($item) {
    * <:= $item.title :>
    * <:= $item.title :>
    * <:= $item.title :>
: }