Commit | Line | Data |
d7f82e1b |
1 | use strict; |
2 | use warnings FATAL => 'all'; |
3 | use Test::More; |
490df899 |
4 | use HTML::Zoom; |
d7f82e1b |
5 | |
6 | { |
7 | package BasicPage; |
8 | use HTML::Tags; |
9 | |
10 | sub show_landing_html { |
11 | as_html(\&landing, ( |
12 | title => "Welcome to the Demo Home", |
13 | site_version => 10, |
14 | new_user_link => 'create_user.html', |
15 | )); |
16 | } |
17 | |
18 | sub show_landing_events { |
19 | as_events(\&landing, ( |
20 | title => "Welcome to the Demo Home", |
21 | site_version => 10, |
22 | new_user_link => 'create_user.html', |
23 | )); |
24 | } |
25 | |
26 | sub layout { |
27 | my (%data) = @_; |
c7611f51 |
28 | \'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" ', |
29 | \'"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">', |
d7f82e1b |
30 | <html>, |
31 | <head>, |
32 | <!-- here is a comment -->, |
33 | <title>, ($data{title} || 'Hello World'), </title>, |
34 | </head>, |
35 | <body>, |
36 | @{$data{content}}, |
37 | </body>, |
38 | </html>; |
39 | } |
40 | |
41 | sub landing { |
42 | my (%data) = @_; |
c931318d |
43 | <p>, "Hi, I'm version: $data{site_version}", </p>, |
d7f82e1b |
44 | <p>, "Here's some interesting things about me", </p>, |
45 | <img src="smilyface.png" alt="smiles" />, |
46 | <ul>, |
c931318d |
47 | <li>, <a href="/user">, "My Users", </li>, |
c7611f51 |
48 | <li>, <a href="/user/$data{new_user_link}">, "Create", "New User", </li>, |
d7f82e1b |
49 | </ul>; |
50 | } |
51 | |
52 | sub process_templates { |
53 | my ($templates, %data) = @_; |
54 | for my $template(@$templates) { |
c931318d |
55 | my @processed = $template->(%data); |
56 | $data{content} = \@processed; |
d7f82e1b |
57 | } |
58 | return @{$data{content}}; |
59 | } |
60 | |
c2a7cd50 |
61 | sub merge_layout { |
d7f82e1b |
62 | my ($template, %data) = @_; |
c2a7cd50 |
63 | process_templates([$template, \&layout], %data); |
64 | } |
65 | |
66 | sub as_html { |
67 | join '', HTML::Tags::to_html_string(&merge_layout(@_)); |
d7f82e1b |
68 | } |
69 | |
70 | sub as_events { |
c2a7cd50 |
71 | HTML::Tags::to_zoom_events(&merge_layout(@_)); |
d7f82e1b |
72 | } |
73 | } |
74 | |
75 | ok my $html = BasicPage->show_landing_html; |
76 | ok my $zoom = HTML::Zoom->from_html($html); |
c2a7cd50 |
77 | ok my @events = BasicPage->show_landing_events; |
d7f82e1b |
78 | |
c2a7cd50 |
79 | is_deeply $zoom->to_events, \@events, |
c931318d |
80 | 'Made HZoom events from XMLTags'; |
d7f82e1b |
81 | |
c931318d |
82 | #use Data::Dump 'dump'; |
83 | #warn dump $html; |
84 | #warn dump $zoom->to_events; |
c7611f51 |
85 | #warn "======================"; |
c931318d |
86 | #warn dump $events; |
87 | |
c2a7cd50 |
88 | use HTML::Tags; |
89 | my @a = map { "$_" } (<html>,"Hi",</html>); |
90 | |
91 | warn @a; |
92 | |
93 | |
c931318d |
94 | done_testing(); |