slightly more clean separation of duties
[catagits/HTML-Zoom.git] / t / tags_as_zoom_events.t
CommitLineData
d7f82e1b 1use strict;
2use warnings FATAL => 'all';
3use Test::More;
490df899 4use 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
75ok my $html = BasicPage->show_landing_html;
76ok my $zoom = HTML::Zoom->from_html($html);
c2a7cd50 77ok my @events = BasicPage->show_landing_events;
d7f82e1b 78
c2a7cd50 79is_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 88use HTML::Tags;
89my @a = map { "$_" } (<html>,"Hi",</html>);
90
91warn @a;
92
93
c931318d 94done_testing();