File Coverage

blib/lib/HTML5/DOM.pm
Criterion Covered Total %
statement 868 884 98.1
branch 2 4 50.0
condition 1 3 33.3
subroutine 289 290 99.6
pod 1 1 100.0
total 1161 1182 98.2


line stmt bran cond sub pod time code
1             package HTML5::DOM;
2 3     3   2823 use strict;
  3         6  
  3         93  
3 3     3   14 use warnings;
  3         6  
  3         89  
4              
5             # Node types
6 3     3   2265 use HTML5::DOM::Node;
  3         7  
  3         82  
7 3     3   2081 use HTML5::DOM::Element;
  3         7  
  3         89  
8 3     3   2020 use HTML5::DOM::Fragment;
  3         6  
  3         88  
9 3     3   2163 use HTML5::DOM::Comment;
  3         7  
  3         85  
10 3     3   2100 use HTML5::DOM::DocType;
  3         9  
  3         87  
11 3     3   2100 use HTML5::DOM::Text;
  3         7  
  3         88  
12 3     3   2069 use HTML5::DOM::Document;
  3         9  
  3         84  
13              
14 3     3   2007 use HTML5::DOM::Encoding;
  3         8  
  3         82  
15 3     3   2053 use HTML5::DOM::Tree;
  3         6  
  3         83  
16 3     3   2154 use HTML5::DOM::Collection;
  3         8  
  3         92  
17 3     3   2055 use HTML5::DOM::CSS;
  3         8  
  3         83  
18 3     3   18 use HTML5::DOM::TokenList;
  3         4  
  3         116  
19              
20             our $VERSION = '1.25';
21             require XSLoader;
22              
23             # https://developer.mozilla.org/pl/docs/Web/API/Element/nodeType
24 3     3   17 use constant ELEMENT_NODE => 1;
  3         5  
  3         159  
25 3     3   15 use constant ATTRIBUTE_NODE => 2; # not supported
  3         5  
  3         128  
26 3     3   15 use constant TEXT_NODE => 3;
  3         5  
  3         113  
27 3     3   16 use constant CDATA_SECTION_NODE => 4; # not supported
  3         6  
  3         117  
28 3     3   16 use constant ENTITY_REFERENCE_NODE => 5; # not supported
  3         4  
  3         116  
29 3     3   15 use constant ENTITY_NODE => 6; # not supported
  3         4  
  3         111  
30 3     3   25 use constant PROCESSING_INSTRUCTION_NODE => 7; # not supported
  3         7  
  3         137  
31 3     3   18 use constant COMMENT_NODE => 8;
  3         5  
  3         165  
32 3     3   19 use constant DOCUMENT_NODE => 9;
  3         4  
  3         151  
33 3     3   18 use constant DOCUMENT_TYPE_NODE => 10;
  3         6  
  3         151  
34 3     3   16 use constant DOCUMENT_FRAGMENT_NODE => 11;
  3         5  
  3         147  
35 3     3   17 use constant NOTATION_NODE => 12; # not supported
  3         6  
  3         169  
36              
37             #
38 3     3   19 use constant TAG__UNDEF => 0x0;
  3         7  
  3         148  
39 3     3   17 use constant TAG__TEXT => 0x1;
  3         139  
  3         156  
40 3     3   18 use constant TAG__COMMENT => 0x2;
  3         7  
  3         126  
41 3     3   17 use constant TAG__DOCTYPE => 0x3;
  3         4  
  3         157  
42 3     3   17 use constant TAG_A => 0x4;
  3         71  
  3         140  
43 3     3   18 use constant TAG_ABBR => 0x5;
  3         5  
  3         136  
44 3     3   16 use constant TAG_ACRONYM => 0x6;
  3         6  
  3         140  
45 3     3   17 use constant TAG_ADDRESS => 0x7;
  3         6  
  3         139  
46 3     3   17 use constant TAG_ANNOTATION_XML => 0x8;
  3         5  
  3         132  
47 3     3   16 use constant TAG_APPLET => 0x9;
  3         6  
  3         146  
48 3     3   17 use constant TAG_AREA => 0xa;
  3         16  
  3         161  
49 3     3   19 use constant TAG_ARTICLE => 0xb;
  3         5  
  3         166  
50 3     3   16 use constant TAG_ASIDE => 0xc;
  3         5  
  3         137  
51 3     3   19 use constant TAG_AUDIO => 0xd;
  3         4  
  3         129  
52 3     3   16 use constant TAG_B => 0xe;
  3         6  
  3         156  
53 3     3   19 use constant TAG_BASE => 0xf;
  3         4  
  3         183  
54 3     3   26 use constant TAG_BASEFONT => 0x10;
  3         5  
  3         151  
55 3     3   16 use constant TAG_BDI => 0x11;
  3         4  
  3         178  
56 3     3   20 use constant TAG_BDO => 0x12;
  3         6  
  3         191  
57 3     3   18 use constant TAG_BGSOUND => 0x13;
  3         5  
  3         159  
58 3     3   18 use constant TAG_BIG => 0x14;
  3         5  
  3         140  
59 3     3   16 use constant TAG_BLINK => 0x15;
  3         6  
  3         207  
60 3     3   23 use constant TAG_BLOCKQUOTE => 0x16;
  3         3  
  3         177  
61 3     3   19 use constant TAG_BODY => 0x17;
  3         6  
  3         133  
62 3     3   16 use constant TAG_BR => 0x18;
  3         6  
  3         141  
63 3     3   18 use constant TAG_BUTTON => 0x19;
  3         5  
  3         166  
64 3     3   19 use constant TAG_CANVAS => 0x1a;
  3         3  
  3         182  
65 3     3   19 use constant TAG_CAPTION => 0x1b;
  3         4  
  3         141  
66 3     3   74 use constant TAG_CENTER => 0x1c;
  3         5  
  3         144  
67 3     3   15 use constant TAG_CITE => 0x1d;
  3         6  
  3         156  
68 3     3   20 use constant TAG_CODE => 0x1e;
  3         13  
  3         134  
69 3     3   17 use constant TAG_COL => 0x1f;
  3         4  
  3         164  
70 3     3   19 use constant TAG_COLGROUP => 0x20;
  3         4  
  3         150  
71 3     3   18 use constant TAG_COMMAND => 0x21;
  3         6  
  3         141  
72 3     3   17 use constant TAG_COMMENT => 0x22;
  3         5  
  3         176  
73 3     3   19 use constant TAG_DATALIST => 0x23;
  3         5  
  3         140  
74 3     3   17 use constant TAG_DD => 0x24;
  3         19  
  3         150  
75 3     3   18 use constant TAG_DEL => 0x25;
  3         12  
  3         162  
76 3     3   19 use constant TAG_DETAILS => 0x26;
  3         4  
  3         161  
77 3     3   19 use constant TAG_DFN => 0x27;
  3         4  
  3         142  
78 3     3   17 use constant TAG_DIALOG => 0x28;
  3         5  
  3         138  
79 3     3   19 use constant TAG_DIR => 0x29;
  3         3  
  3         141  
80 3     3   17 use constant TAG_DIV => 0x2a;
  3         4  
  3         157  
81 3     3   29 use constant TAG_DL => 0x2b;
  3         4  
  3         158  
82 3     3   18 use constant TAG_DT => 0x2c;
  3         6  
  3         131  
83 3     3   16 use constant TAG_EM => 0x2d;
  3         4  
  3         139  
84 3     3   17 use constant TAG_EMBED => 0x2e;
  3         6  
  3         128  
85 3     3   16 use constant TAG_FIELDSET => 0x2f;
  3         6  
  3         140  
86 3     3   18 use constant TAG_FIGCAPTION => 0x30;
  3         4  
  3         145  
87 3     3   17 use constant TAG_FIGURE => 0x31;
  3         22  
  3         167  
88 3     3   20 use constant TAG_FONT => 0x32;
  3         5  
  3         152  
89 3     3   37 use constant TAG_FOOTER => 0x33;
  3         6  
  3         138  
90 3     3   20 use constant TAG_FORM => 0x34;
  3         6  
  3         150  
91 3     3   18 use constant TAG_FRAME => 0x35;
  3         4  
  3         161  
92 3     3   18 use constant TAG_FRAMESET => 0x36;
  3         5  
  3         129  
93 3     3   16 use constant TAG_H1 => 0x37;
  3         6  
  3         134  
94 3     3   17 use constant TAG_H2 => 0x38;
  3         18  
  3         131  
95 3     3   17 use constant TAG_H3 => 0x39;
  3         5  
  3         166  
96 3     3   20 use constant TAG_H4 => 0x3a;
  3         5  
  3         163  
97 3     3   27 use constant TAG_H5 => 0x3b;
  3         7  
  3         131  
98 3     3   17 use constant TAG_H6 => 0x3c;
  3         5  
  3         148  
99 3     3   19 use constant TAG_HEAD => 0x3d;
  3         5  
  3         134  
100 3     3   18 use constant TAG_HEADER => 0x3e;
  3         4  
  3         157  
101 3     3   18 use constant TAG_HGROUP => 0x3f;
  3         6  
  3         135  
102 3     3   18 use constant TAG_HR => 0x40;
  3         4  
  3         133  
103 3     3   17 use constant TAG_HTML => 0x41;
  3         5  
  3         177  
104 3     3   21 use constant TAG_I => 0x42;
  3         4  
  3         134  
105 3     3   17 use constant TAG_IFRAME => 0x43;
  3         23  
  3         162  
106 3     3   27 use constant TAG_IMAGE => 0x44;
  3         7  
  3         137  
107 3     3   19 use constant TAG_IMG => 0x45;
  3         3  
  3         140  
108 3     3   15 use constant TAG_INPUT => 0x46;
  3         6  
  3         141  
109 3     3   18 use constant TAG_INS => 0x47;
  3         13  
  3         145  
110 3     3   18 use constant TAG_ISINDEX => 0x48;
  3         5  
  3         141  
111 3     3   17 use constant TAG_KBD => 0x49;
  3         5  
  3         134  
112 3     3   19 use constant TAG_KEYGEN => 0x4a;
  3         4  
  3         164  
113 3     3   26 use constant TAG_LABEL => 0x4b;
  3         14  
  3         146  
114 3     3   17 use constant TAG_LEGEND => 0x4c;
  3         4  
  3         147  
115 3     3   17 use constant TAG_LI => 0x4d;
  3         5  
  3         141  
116 3     3   17 use constant TAG_LINK => 0x4e;
  3         5  
  3         195  
117 3     3   20 use constant TAG_LISTING => 0x4f;
  3         5  
  3         134  
118 3     3   15 use constant TAG_MAIN => 0x50;
  3         6  
  3         145  
119 3     3   18 use constant TAG_MAP => 0x51;
  3         6  
  3         164  
120 3     3   19 use constant TAG_MARK => 0x52;
  3         6  
  3         143  
121 3     3   15 use constant TAG_MARQUEE => 0x53;
  3         6  
  3         158  
122 3     3   19 use constant TAG_MENU => 0x54;
  3         5  
  3         163  
123 3     3   17 use constant TAG_MENUITEM => 0x55;
  3         4  
  3         144  
124 3     3   18 use constant TAG_META => 0x56;
  3         5  
  3         153  
125 3     3   18 use constant TAG_METER => 0x57;
  3         5  
  3         174  
126 3     3   18 use constant TAG_MTEXT => 0x58;
  3         6  
  3         160  
127 3     3   18 use constant TAG_NAV => 0x59;
  3         5  
  3         131  
128 3     3   16 use constant TAG_NOBR => 0x5a;
  3         15  
  3         167  
129 3     3   18 use constant TAG_NOEMBED => 0x5b;
  3         5  
  3         153  
130 3     3   19 use constant TAG_NOFRAMES => 0x5c;
  3         5  
  3         140  
131 3     3   17 use constant TAG_NOSCRIPT => 0x5d;
  3         4  
  3         186  
132 3     3   19 use constant TAG_OBJECT => 0x5e;
  3         5  
  3         192  
133 3     3   18 use constant TAG_OL => 0x5f;
  3         4  
  3         159  
134 3     3   20 use constant TAG_OPTGROUP => 0x60;
  3         5  
  3         149  
135 3     3   17 use constant TAG_OPTION => 0x61;
  3         6  
  3         149  
136 3     3   16 use constant TAG_OUTPUT => 0x62;
  3         6  
  3         168  
137 3     3   19 use constant TAG_P => 0x63;
  3         5  
  3         204  
138 3     3   19 use constant TAG_PARAM => 0x64;
  3         3  
  3         154  
139 3     3   18 use constant TAG_PLAINTEXT => 0x65;
  3         5  
  3         197  
140 3     3   19 use constant TAG_PRE => 0x66;
  3         6  
  3         175  
141 3     3   18 use constant TAG_PROGRESS => 0x67;
  3         5  
  3         141  
142 3     3   18 use constant TAG_Q => 0x68;
  3         13  
  3         133  
143 3     3   17 use constant TAG_RB => 0x69;
  3         4  
  3         159  
144 3     3   20 use constant TAG_RP => 0x6a;
  3         3  
  3         165  
145 3     3   19 use constant TAG_RT => 0x6b;
  3         5  
  3         156  
146 3     3   16 use constant TAG_RTC => 0x6c;
  3         5  
  3         152  
147 3     3   32 use constant TAG_RUBY => 0x6d;
  3         5  
  3         132  
148 3     3   16 use constant TAG_S => 0x6e;
  3         5  
  3         137  
149 3     3   18 use constant TAG_SAMP => 0x6f;
  3         4  
  3         139  
150 3     3   19 use constant TAG_SCRIPT => 0x70;
  3         3  
  3         147  
151 3     3   16 use constant TAG_SECTION => 0x71;
  3         6  
  3         139  
152 3     3   17 use constant TAG_SELECT => 0x72;
  3         6  
  3         161  
153 3     3   17 use constant TAG_SMALL => 0x73;
  3         5  
  3         170  
154 3     3   21 use constant TAG_SOURCE => 0x74;
  3         5  
  3         128  
155 3     3   27 use constant TAG_SPAN => 0x75;
  3         7  
  3         161  
156 3     3   19 use constant TAG_STRIKE => 0x76;
  3         5  
  3         126  
157 3     3   16 use constant TAG_STRONG => 0x77;
  3         5  
  3         143  
158 3     3   19 use constant TAG_STYLE => 0x78;
  3         5  
  3         162  
159 3     3   19 use constant TAG_SUB => 0x79;
  3         4  
  3         135  
160 3     3   17 use constant TAG_SUMMARY => 0x7a;
  3         5  
  3         150  
161 3     3   17 use constant TAG_SUP => 0x7b;
  3         5  
  3         146  
162 3     3   19 use constant TAG_SVG => 0x7c;
  3         18  
  3         148  
163 3     3   16 use constant TAG_TABLE => 0x7d;
  3         15  
  3         154  
164 3     3   18 use constant TAG_TBODY => 0x7e;
  3         6  
  3         146  
165 3     3   15 use constant TAG_TD => 0x7f;
  3         6  
  3         166  
166 3     3   19 use constant TAG_TEMPLATE => 0x80;
  3         5  
  3         141  
167 3     3   17 use constant TAG_TEXTAREA => 0x81;
  3         6  
  3         158  
168 3     3   19 use constant TAG_TFOOT => 0x82;
  3         5  
  3         138  
169 3     3   17 use constant TAG_TH => 0x83;
  3         5  
  3         210  
170 3     3   18 use constant TAG_THEAD => 0x84;
  3         6  
  3         133  
171 3     3   17 use constant TAG_TIME => 0x85;
  3         10  
  3         147  
172 3     3   19 use constant TAG_TITLE => 0x86;
  3         4  
  3         139  
173 3     3   19 use constant TAG_TR => 0x87;
  3         4  
  3         130  
174 3     3   15 use constant TAG_TRACK => 0x88;
  3         6  
  3         160  
175 3     3   19 use constant TAG_TT => 0x89;
  3         6  
  3         147  
176 3     3   17 use constant TAG_U => 0x8a;
  3         6  
  3         165  
177 3     3   19 use constant TAG_UL => 0x8b;
  3         5  
  3         164  
178 3     3   19 use constant TAG_VAR => 0x8c;
  3         5  
  3         142  
179 3     3   18 use constant TAG_VIDEO => 0x8d;
  3         6  
  3         137  
180 3     3   16 use constant TAG_WBR => 0x8e;
  3         6  
  3         148  
181 3     3   19 use constant TAG_XMP => 0x8f;
  3         5  
  3         142  
182 3     3   16 use constant TAG_ALTGLYPH => 0x90;
  3         6  
  3         143  
183 3     3   17 use constant TAG_ALTGLYPHDEF => 0x91;
  3         6  
  3         136  
184 3     3   18 use constant TAG_ALTGLYPHITEM => 0x92;
  3         5  
  3         142  
185 3     3   26 use constant TAG_ANIMATE => 0x93;
  3         7  
  3         161  
186 3     3   18 use constant TAG_ANIMATECOLOR => 0x94;
  3         6  
  3         142  
187 3     3   20 use constant TAG_ANIMATEMOTION => 0x95;
  3         4  
  3         157  
188 3     3   18 use constant TAG_ANIMATETRANSFORM => 0x96;
  3         5  
  3         164  
189 3     3   18 use constant TAG_CIRCLE => 0x97;
  3         6  
  3         170  
190 3     3   17 use constant TAG_CLIPPATH => 0x98;
  3         5  
  3         163  
191 3     3   21 use constant TAG_COLOR_PROFILE => 0x99;
  3         3  
  3         150  
192 3     3   18 use constant TAG_CURSOR => 0x9a;
  3         5  
  3         158  
193 3     3   35 use constant TAG_DEFS => 0x9b;
  3         5  
  3         146  
194 3     3   16 use constant TAG_DESC => 0x9c;
  3         5  
  3         150  
195 3     3   19 use constant TAG_ELLIPSE => 0x9d;
  3         5  
  3         137  
196 3     3   18 use constant TAG_FEBLEND => 0x9e;
  3         5  
  3         149  
197 3     3   17 use constant TAG_FECOLORMATRIX => 0x9f;
  3         5  
  3         192  
198 3     3   19 use constant TAG_FECOMPONENTTRANSFER => 0xa0;
  3         5  
  3         154  
199 3     3   18 use constant TAG_FECOMPOSITE => 0xa1;
  3         5  
  3         132  
200 3     3   17 use constant TAG_FECONVOLVEMATRIX => 0xa2;
  3         4  
  3         163  
201 3     3   27 use constant TAG_FEDIFFUSELIGHTING => 0xa3;
  3         6  
  3         182  
202 3     3   17 use constant TAG_FEDISPLACEMENTMAP => 0xa4;
  3         5  
  3         154  
203 3     3   51 use constant TAG_FEDISTANTLIGHT => 0xa5;
  3         6  
  3         173  
204 3     3   18 use constant TAG_FEDROPSHADOW => 0xa6;
  3         5  
  3         130  
205 3     3   15 use constant TAG_FEFLOOD => 0xa7;
  3         5  
  3         134  
206 3     3   17 use constant TAG_FEFUNCA => 0xa8;
  3         6  
  3         143  
207 3     3   17 use constant TAG_FEFUNCB => 0xa9;
  3         5  
  3         169  
208 3     3   18 use constant TAG_FEFUNCG => 0xaa;
  3         5  
  3         149  
209 3     3   18 use constant TAG_FEFUNCR => 0xab;
  3         15  
  3         159  
210 3     3   273 use constant TAG_FEGAUSSIANBLUR => 0xac;
  3         11  
  3         152  
211 3     3   19 use constant TAG_FEIMAGE => 0xad;
  3         6  
  3         132  
212 3     3   16 use constant TAG_FEMERGE => 0xae;
  3         6  
  3         110  
213 3     3   142 use constant TAG_FEMERGENODE => 0xaf;
  3         7  
  3         121  
214 3     3   16 use constant TAG_FEMORPHOLOGY => 0xb0;
  3         4  
  3         106  
215 3     3   14 use constant TAG_FEOFFSET => 0xb1;
  3         4  
  3         105  
216 3     3   14 use constant TAG_FEPOINTLIGHT => 0xb2;
  3         4  
  3         152  
217 3     3   17 use constant TAG_FESPECULARLIGHTING => 0xb3;
  3         13  
  3         147  
218 3     3   17 use constant TAG_FESPOTLIGHT => 0xb4;
  3         6  
  3         140  
219 3     3   16 use constant TAG_FETILE => 0xb5;
  3         6  
  3         159  
220 3     3   18 use constant TAG_FETURBULENCE => 0xb6;
  3         4  
  3         156  
221 3     3   18 use constant TAG_FILTER => 0xb7;
  3         4  
  3         150  
222 3     3   18 use constant TAG_FONT_FACE => 0xb8;
  3         6  
  3         140  
223 3     3   18 use constant TAG_FONT_FACE_FORMAT => 0xb9;
  3         3  
  3         148  
224 3     3   17 use constant TAG_FONT_FACE_NAME => 0xba;
  3         6  
  3         157  
225 3     3   19 use constant TAG_FONT_FACE_SRC => 0xbb;
  3         5  
  3         161  
226 3     3   19 use constant TAG_FONT_FACE_URI => 0xbc;
  3         4  
  3         152  
227 3     3   18 use constant TAG_FOREIGNOBJECT => 0xbd;
  3         5  
  3         157  
228 3     3   17 use constant TAG_G => 0xbe;
  3         6  
  3         140  
229 3     3   18 use constant TAG_GLYPH => 0xbf;
  3         5  
  3         131  
230 3     3   17 use constant TAG_GLYPHREF => 0xc0;
  3         4  
  3         205  
231 3     3   19 use constant TAG_HKERN => 0xc1;
  3         5  
  3         150  
232 3     3   19 use constant TAG_LINE => 0xc2;
  3         6  
  3         129  
233 3     3   16 use constant TAG_LINEARGRADIENT => 0xc3;
  3         5  
  3         163  
234 3     3   18 use constant TAG_MARKER => 0xc4;
  3         6  
  3         133  
235 3     3   17 use constant TAG_MASK => 0xc5;
  3         4  
  3         199  
236 3     3   18 use constant TAG_METADATA => 0xc6;
  3         6  
  3         146  
237 3     3   18 use constant TAG_MISSING_GLYPH => 0xc7;
  3         5  
  3         129  
238 3     3   16 use constant TAG_MPATH => 0xc8;
  3         12  
  3         143  
239 3     3   18 use constant TAG_PATH => 0xc9;
  3         5  
  3         131  
240 3     3   16 use constant TAG_PATTERN => 0xca;
  3         6  
  3         159  
241 3     3   19 use constant TAG_POLYGON => 0xcb;
  3         4  
  3         187  
242 3     3   20 use constant TAG_POLYLINE => 0xcc;
  3         3  
  3         149  
243 3     3   19 use constant TAG_RADIALGRADIENT => 0xcd;
  3         4  
  3         238  
244 3     3   21 use constant TAG_RECT => 0xce;
  3         3  
  3         135  
245 3     3   16 use constant TAG_SET => 0xcf;
  3         24  
  3         153  
246 3     3   18 use constant TAG_STOP => 0xd0;
  3         5  
  3         136  
247 3     3   17 use constant TAG_SWITCH => 0xd1;
  3         7  
  3         129  
248 3     3   16 use constant TAG_SYMBOL => 0xd2;
  3         6  
  3         140  
249 3     3   17 use constant TAG_TEXT => 0xd3;
  3         5  
  3         136  
250 3     3   35 use constant TAG_TEXTPATH => 0xd4;
  3         5  
  3         154  
251 3     3   19 use constant TAG_TREF => 0xd5;
  3         12  
  3         153  
252 3     3   18 use constant TAG_TSPAN => 0xd6;
  3         5  
  3         129  
253 3     3   16 use constant TAG_USE => 0xd7;
  3         5  
  3         157  
254 3     3   19 use constant TAG_VIEW => 0xd8;
  3         6  
  3         152  
255 3     3   18 use constant TAG_VKERN => 0xd9;
  3         4  
  3         177  
256 3     3   17 use constant TAG_MATH => 0xda;
  3         6  
  3         137  
257 3     3   18 use constant TAG_MACTION => 0xdb;
  3         16  
  3         158  
258 3     3   47 use constant TAG_MALIGNGROUP => 0xdc;
  3         5  
  3         169  
259 3     3   18 use constant TAG_MALIGNMARK => 0xdd;
  3         6  
  3         164  
260 3     3   19 use constant TAG_MENCLOSE => 0xde;
  3         5  
  3         162  
261 3     3   18 use constant TAG_MERROR => 0xdf;
  3         5  
  3         174  
262 3     3   19 use constant TAG_MFENCED => 0xe0;
  3         5  
  3         138  
263 3     3   16 use constant TAG_MFRAC => 0xe1;
  3         5  
  3         180  
264 3     3   18 use constant TAG_MGLYPH => 0xe2;
  3         30  
  3         167  
265 3     3   18 use constant TAG_MI => 0xe3;
  3         6  
  3         159  
266 3     3   26 use constant TAG_MLABELEDTR => 0xe4;
  3         6  
  3         147  
267 3     3   18 use constant TAG_MLONGDIV => 0xe5;
  3         6  
  3         245  
268 3     3   21 use constant TAG_MMULTISCRIPTS => 0xe6;
  3         5  
  3         129  
269 3     3   14 use constant TAG_MN => 0xe7;
  3         14  
  3         175  
270 3     3   18 use constant TAG_MO => 0xe8;
  3         5  
  3         143  
271 3     3   17 use constant TAG_MOVER => 0xe9;
  3         53  
  3         140  
272 3     3   17 use constant TAG_MPADDED => 0xea;
  3         5  
  3         136  
273 3     3   17 use constant TAG_MPHANTOM => 0xeb;
  3         4  
  3         144  
274 3     3   16 use constant TAG_MROOT => 0xec;
  3         27  
  3         148  
275 3     3   32 use constant TAG_MROW => 0xed;
  3         4  
  3         156  
276 3     3   27 use constant TAG_MS => 0xee;
  3         7  
  3         138  
277 3     3   16 use constant TAG_MSCARRIES => 0xef;
  3         5  
  3         136  
278 3     3   18 use constant TAG_MSCARRY => 0xf0;
  3         5  
  3         133  
279 3     3   26 use constant TAG_MSGROUP => 0xf1;
  3         11  
  3         148  
280 3     3   18 use constant TAG_MSLINE => 0xf2;
  3         5  
  3         187  
281 3     3   18 use constant TAG_MSPACE => 0xf3;
  3         6  
  3         160  
282 3     3   19 use constant TAG_MSQRT => 0xf4;
  3         23  
  3         202  
283 3     3   66 use constant TAG_MSROW => 0xf5;
  3         6  
  3         188  
284 3     3   20 use constant TAG_MSTACK => 0xf6;
  3         5  
  3         140  
285 3     3   17 use constant TAG_MSTYLE => 0xf7;
  3         4  
  3         125  
286 3     3   17 use constant TAG_MSUB => 0xf8;
  3         5  
  3         154  
287 3     3   18 use constant TAG_MSUP => 0xf9;
  3         4  
  3         145  
288 3     3   17 use constant TAG_MSUBSUP => 0xfa;
  3         6  
  3         154  
289 3     3   20 use constant TAG__END_OF_FILE => 0xfb;
  3         6  
  3         144  
290 3     3   16 use constant TAG_LAST_ENTRY => 0xfc;
  3         5  
  3         153  
291             #
292              
293             #
294 3     3   17 use constant NS_UNDEF => 0x0;
  3         5  
  3         152  
295 3     3   19 use constant NS_HTML => 0x1;
  3         6  
  3         146  
296 3     3   17 use constant NS_MATHML => 0x2;
  3         5  
  3         150  
297 3     3   19 use constant NS_SVG => 0x3;
  3         5  
  3         155  
298 3     3   16 use constant NS_XLINK => 0x4;
  3         7  
  3         137  
299 3     3   19 use constant NS_XML => 0x5;
  3         4  
  3         137  
300 3     3   16 use constant NS_XMLNS => 0x6;
  3         4  
  3         164  
301 3     3   19 use constant NS_ANY => 0x7;
  3         15  
  3         194  
302 3     3   18 use constant NS_LAST_ENTRY => 0x7;
  3         5  
  3         941  
303             #
304              
305             sub parseAsync($$;$$) {
306 8     8 1 8654 my ($self, $html, $options, $callback) = @_;
307            
308 8 50 33     40 if (ref($options) eq 'CODE' && !defined $callback) {
309 0         0 $callback = $options;
310 0         0 $options = {};
311             }
312            
313 8 50       22 if (ref($callback) eq 'CODE') {
314 0         0 require EV;
315 0         0 require AnyEvent::Util;
316            
317 0         0 my ($r, $w) = AnyEvent::Util::portable_pipe();
318 0         0 AnyEvent::fh_unblock($r);
319            
320 0         0 my $async_w;
321 0         0 my $async = $self->_parseAsync($html, $options, fileno($w));
322            
323             $async_w = EV::io($r, EV::READ(), sub {
324 0     0   0 close $w;
325 0         0 close $r;
326 0         0 undef $w;
327 0         0 undef $r;
328 0         0 undef $async_w;
329            
330 0         0 $callback->($async->wait);
331 0         0 });
332            
333 0         0 return $async;
334             } else {
335 8         5183 _parseAsync(@_);
336             }
337             }
338              
339             XSLoader::load('HTML5::DOM', $VERSION);
340              
341             1;
342             __END__