Commit | Line | Data |
1cf03540 |
1 | use strictures 1; |
0d8f057e |
2 | use Test::More qw(no_plan); |
3 | |
4 | use HTML::Zoom; |
5 | |
6 | my $template = <<HTML; |
7 | <html> |
8 | <head> |
9 | <title>Hello people</title> |
10 | </head> |
11 | <body> |
12 | <h1 id="greeting">Placeholder</h1> |
13 | <div id="list"> |
14 | <span> |
15 | <p>Name: <span class="name">Bob</span></p> |
16 | <p>Age: <span class="age">23</span></p> |
17 | </span> |
18 | <hr class="between" /> |
19 | </div> |
20 | </body> |
21 | </html> |
22 | HTML |
23 | |
24 | my $output = HTML::Zoom |
25 | ->from_html($template) |
26 | ->select('title, #greeting')->replace_content('Hello world & dog!') |
27 | ->select('#list')->repeat_content( |
28 | [ |
29 | sub { |
30 | $_->select('.name')->replace_content('Matt') |
31 | ->select('.age')->replace_content('26') |
32 | }, |
33 | sub { |
34 | $_->select('.name')->replace_content('Mark') |
35 | ->select('.age')->replace_content('0x29') |
36 | }, |
37 | sub { |
38 | $_->select('.name')->replace_content('Epitaph') |
39 | ->select('.age')->replace_content('<redacted>') |
40 | }, |
41 | ], |
42 | { repeat_between => '.between' } |
43 | ) |
44 | ->to_html; |
45 | |
46 | |
47 | my $expect = <<HTML; |
48 | <html> |
49 | <head> |
50 | <title>Hello world & dog!</title> |
51 | </head> |
52 | <body> |
53 | <h1 id="greeting">Hello world & dog!</h1> |
54 | <div id="list"> |
55 | <span> |
56 | <p>Name: <span class="name">Matt</span></p> |
57 | <p>Age: <span class="age">26</span></p> |
58 | </span> |
59 | <hr class="between" /> |
60 | <span> |
61 | <p>Name: <span class="name">Mark</span></p> |
62 | <p>Age: <span class="age">0x29</span></p> |
63 | </span> |
64 | <hr class="between" /> |
65 | <span> |
66 | <p>Name: <span class="name">Epitaph</span></p> |
67 | <p>Age: <span class="age"><redacted></span></p> |
68 | </span> |
69 | |
70 | </div> |
71 | </body> |
72 | </html> |
73 | HTML |
74 | is($output, $expect, 'Synopsis code works ok'); |
75 | |