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