5 package P; @ISA = qw(HTML::Parser);
10 my($self, $tag, $attr) = @_;
11 push @result, "START[$tag]";
12 for (sort keys %$attr) {
13 push @result, "\t$_: " . $attr->{$_};
21 push @result, "END[$tag]";
28 push @result, "TEXT[$_[0]]";
35 push @result, "COMMENT[$_[0]]";
42 push @result, "DECLARATION[$_[0]]";
51 '<a ">' => ['START[a]', "\t\": \""],
52 '<a/>' => ['START[a/]',],
53 '<a />' => ['START[a]', "\t/: /"],
54 '<a a/>' => ['START[a]', "\ta/: a/"],
55 '<a a/=/>' => ['START[a]', "\ta/: /"],
56 '<a x="foo bar">' => ['START[a]', "\tx: foo\xA0bar"],
57 '<a x="foo bar">' => ['START[a]', "\tx: foo bar"],
58 '<å >' => ['TEXT[<å]', 'TEXT[ >]'],
59 '2 < 5' => ['TEXT[2 ]', 'TEXT[<]', 'TEXT[ 5]'],
60 '2 <5> 2' => ['TEXT[2 ]', 'TEXT[<5>]', 'TEXT[ 2]'],
61 '2 <a' => ['TEXT[2 ]', 'TEXT[<a]'],
62 '2 <a> 2' => ['TEXT[2 ]', 'START[a]', 'TEXT[ 2]'],
63 '2 <a href=foo' => ['TEXT[2 ]', 'TEXT[<a href=foo]'],
64 "2 <a href='foo bar'> 2" =>
65 ['TEXT[2 ]', 'START[a]', "\thref: foo bar", 'TEXT[ 2]'],
66 '2 <a href=foo bar> 2' =>
67 ['TEXT[2 ]', 'START[a]', "\tbar: bar", "\thref: foo", 'TEXT[ 2]'],
68 '2 <a href="foo bar"> 2' =>
69 ['TEXT[2 ]', 'START[a]', "\thref: foo bar", 'TEXT[ 2]'],
70 '2 <a href="foo\'bar"> 2' =>
71 ['TEXT[2 ]', 'START[a]', "\thref: foo'bar", 'TEXT[ 2]'],
72 "2 <a href='foo\"bar'> 2" =>
73 ['TEXT[2 ]', 'START[a]', "\thref: foo\"bar", 'TEXT[ 2]'],
74 "2 <a href='foo"bar'> 2" =>
75 ['TEXT[2 ]', 'START[a]', "\thref: foo\"bar", 'TEXT[ 2]'],
76 '2 <a.b> 2' => ['TEXT[2 ]', 'START[a.b]', 'TEXT[ 2]'],
77 '2 <a.b-12 a.b = 2 a> 2' =>
78 ['TEXT[2 ]', 'START[a.b-12]', "\ta: a", "\ta.b: 2", 'TEXT[ 2]'],
79 '2 <a_b> 2' => ['TEXT[2 ]', 'START[a_b]', 'TEXT[ 2]'],
80 '<!ENTITY nbsp CDATA " " -- no-break space -->' =>
81 ['DECLARATION[ENTITY nbsp CDATA " " -- no-break space --]'],
82 '<!-- comment -->' => ['COMMENT[ comment ]'],
83 '<!-- comment -- --- comment -->' =>
84 ['COMMENT[ comment ]', 'COMMENT[- comment ]'],
85 '<!-- comment <!-- not comment --> comment -->' =>
86 ['COMMENT[ comment <!]', 'COMMENT[> comment ]'],
87 '<!-- <a href="foo"> -->' => ['COMMENT[ <a href="foo"> ]'],
90 plan tests => @tests / 2;
96 my ($html, $expected) = splice @tests, 0, 2;
100 $p->strict_comment(1);
101 $p->parse($html)->eof;
103 ok(eq_array($expected, \@result)) or diag("Expected: @$expected\n",