/[suikacvs]/messaging/manakai/lib/Message/DOM/HTML/HTMLElement.pm
Suika

Contents of /messaging/manakai/lib/Message/DOM/HTML/HTMLElement.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.5 - (show annotations) (download)
Sun May 25 08:54:15 2008 UTC (18 years, 2 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
Changes since 1.4: +4 -2 lines
++ manakai/lib/Message/Charset/ChangeLog	25 May 2008 08:36:43 -0000
2008-05-25  Wakaba  <wakaba@suika.fam.cx>

	* Info.pm (CHARSET_CATEGORY_UTF16): New category.

1 package Message::DOM::HTML::HTMLElement;
2 use strict;
3 our $VERSION=do{my @r=(q$Revision: 1.4 $=~/\d+/g);sprintf "%d."."%02d" x $#r,@r};
4 push our @ISA, 'Message::DOM::Element';
5 require Message::DOM::Element;
6
7 ## TODO: interface
8
9 ## TODO: "reflect" definition need to be updated (both implementation and Perl binding specification) - see HTML5 for latest definition
10
11 sub AUTOLOAD {
12 my $method_name = our $AUTOLOAD;
13 return if $method_name =~ /::DESTROY$/;
14
15 my $ln;
16 if ($ln = { ## Reflecting |DOMString| attribute
17 'Message::DOM::HTML::HTMLAreaElement::alt' => 'alt',
18 'Message::DOM::HTML::HTMLImageElement::alt' => 'alt',
19 'Message::DOM::HTML::HTMLElement::class_name' => 'class',
20 'Message::DOM::HTML::HTMLMetaElement::content' => 'content',
21 'Message::DOM::HTML::HTMLAreaElement::coords' => 'coords',
22 'Message::DOM::HTML::HTMLTimeElement::datetime' => 'datetime',
23 'Message::DOM::HTML::HTMLModElement::datetime' => 'datetime',
24 'Message::DOM::HTML::HTMLAnchorElement::hreflang' => 'hreflang',
25 'Message::DOM::HTML::HTMLAreaElement::hreflang' => 'hreflang',
26 'Message::DOM::HTML::HTMLLinkElement::hreflang' => 'hreflang',
27 'Message::DOM::HTML::HTMLElement::id' => 'id',
28 'Message::DOM::HTML::HTMLCommandElement::label' => 'label',
29 'Message::DOM::HTML::HTMLMenuElement::label' => 'label',
30 'Message::DOM::HTML::HTMLElement::lang' => 'lang',
31 'Message::DOM::HTML::HTMLAnchorElement::media' => 'media',
32 'Message::DOM::HTML::HTMLAreaElement::media' => 'media',
33 'Message::DOM::HTML::HTMLLinkElement::media' => 'media',
34 'Message::DOM::HTML::HTMLSourceElement::media' => 'media',
35 'Message::DOM::HTML::HTMLStyleElement::media' => 'media',
36 'Message::DOM::HTML::HTMLParamElement::name' => 'name',
37 'Message::DOM::HTML::HTMLAnchorElement::ping' => 'ping',
38 'Message::DOM::HTML::HTMLAreaElement::ping' => 'ping',
39 'Message::DOM::HTML::HTMLCommandElement::radiogroup' => 'radiogroup',
40 'Message::DOM::HTML::HTMLAnchorElement::rel' => 'rel',
41 'Message::DOM::HTML::HTMLAreaElement::rel' => 'rel',
42 'Message::DOM::HTML::HTMLLinkElement::rel' => 'rel',
43 'Message::DOM::HTML::HTMLAnchorElement::target' => 'target',
44 'Message::DOM::HTML::HTMLAreaElement::target' => 'target',
45 'Message::DOM::HTML::HTMLBaseElement::target' => 'target',
46 'Message::DOM::HTML::HTMLElement::title' => 'title',
47 'Message::DOM::HTML::HTMLAnchorElement::type' => 'type',
48 'Message::DOM::HTML::HTMLAreaElement::type' => 'type',
49 'Message::DOM::HTML::HTMLCommandElement::type' => 'type',
50 'Message::DOM::HTML::HTMLEmbedElement::type' => 'type',
51 'Message::DOM::HTML::HTMLLinkElement::type' => 'type',
52 'Message::DOM::HTML::HTMLObjectElement::type' => 'type',
53 'Message::DOM::HTML::HTMLScriptElement::type' => 'type',
54 'Message::DOM::HTML::HTMLSourceElement::type' => 'type',
55 'Message::DOM::HTML::HTMLStyleElement::type' => 'type',
56 'Message::DOM::HTML::HTMLImageElement::usemap' => 'usemap',
57 'Message::DOM::HTML::HTMLObjectElement::usemap' => 'usemap',
58 'Message::DOM::HTML::HTMLParamElement::value' => 'value',
59 }->{$method_name}) {
60 no strict 'refs';
61 eval qq{
62 sub $method_name (\$;\$) {
63 local \$Error::Depth = \$Error::Depth + 1;
64
65 if (\@_ > 1) {
66 if (defined \$_[1]) {
67 \$_[0]->set_attribute_ns (undef, '$ln', ''.\$_[1]);
68 } else {
69 ## ISSUE: Not in spec
70 \$_[0]->set_attribute_ns (undef, '$ln', '');
71 }
72 return unless defined wantarray;
73 }
74
75 ## ISSUE: If missing?
76 return \$_[0]->get_attribute_ns (undef, '$ln');
77 }
78 };
79 goto &{ $AUTOLOAD };
80 } elsif ($ln = { ## Reflecting URI attribute
81 'Message::DOM::HTML::HTMLAnchorElement::href' => 'href',
82 }->{$method_name}) {
83 no strict 'refs';
84 eval qq{
85 sub $method_name (\$;\$) {
86 local \$Error::Depth = \$Error::Depth + 1;
87
88 ## TODO: Implement the spec...
89
90 if (\@_ > 1) {
91 if (defined \$_[1]) {
92 \$_[0]->set_attribute_ns (undef, '$ln', ''.\$_[1]);
93 } else {
94 \$_[0]->set_attribute_ns (undef, '$ln', '');
95 }
96 return unless defined wantarray;
97 }
98
99 if (defined wantarray) {
100 my \$uri = \$_[0]->get_attribute_ns (undef, '$ln');
101 if (defined \$uri) {
102 return \$_[0]->owner_document->implementation->create_uri_reference
103 (\$uri)->get_absolute_reference (\$_[0]->base_uri)
104 ->uri_reference;
105 ## TODO: If base_uri is undef...
106 } else {
107 return undef;
108 }
109 }
110 }
111 };
112 goto &{ $AUTOLOAD };
113 } elsif ($ln = { ## Reflecting boolean attribute
114 'Message::DOM::HTML::HTMLScriptElement::async' => 'async',
115 'Message::DOM::HTML::HTMLMenuElement::autosubmit' => 'autosubmit',
116 'Message::DOM::HTML::HTMLCommandElement::checked' => 'checked',
117 'Message::DOM::HTML::HTMLMediaElement::controls' => 'controls',
118 'Message::DOM::HTML::HTMLCommandElement::default' => 'default',
119 'Message::DOM::HTML::HTMLScriptElement::defer' => 'defer',
120 'Message::DOM::HTML::HTMLCommandElement::disabled' => 'disabled',
121 'Message::DOM::HTML::HTMLDataGridElement::disabled' => 'disabled',
122 'Message::DOM::HTML::HTMLCommandElement::hidden' => 'hidden',
123 'Message::DOM::HTML::HTMLElement::irrelevant' => 'irrelevant',
124 'Message::DOM::HTML::HTMLImageElement::ismap' => 'ismap',
125 'Message::DOM::HTML::HTMLDataGridElement::multiple' => 'multiple',
126 'Message::DOM::HTML::HTMLDetailsElement::open' => 'open',
127 'Message::DOM::HTML::HTMLStyleElement::scoped' => 'scoped',
128 }->{$method_name}) {
129 no strict 'refs';
130 eval qq{
131 sub $method_name (\$;\$) {
132 local \$Error::Depth = \$Error::Depth + 1;
133
134 if (\@_ > 1) {
135 if (\$_[1]) {
136 \$_[0]->set_attribute_ns (undef, '$ln', '$ln');
137 } else {
138 \$_[0]->remove_attribute_ns (undef, '$ln');
139 }
140 return unless defined wantarray;
141 }
142
143 return \$_[0]->has_attribute_ns (undef, '$ln');
144 }
145 };
146 goto &{ $AUTOLOAD };
147 } else {
148 require Carp;
149 Carp::croak (qq<Can't locate method "$AUTOLOAD">);
150 }
151 } # AUTOLOAD
152
153 ## TODO: class_list
154
155 sub class_name ($;$);
156
157 ## TODO: dir
158
159 sub id ($;$);
160
161 ## NOTE: inner_html is part of |Message::DOM::Element|.
162
163 sub lang ($;$);
164
165 ## TODO: tab_index
166
167 sub title ($;$);
168
169 ## TODO: Other DOM5 HTML members
170
171 package Message::DOM::HTML::HTMLAnchorElement;
172 push our @ISA, 'Message::DOM::HTML::HTMLElement';
173
174 ## TODO: href
175
176 sub hreflang ($;$);
177
178 sub media ($;$);
179
180 sub ping ($;$);
181
182 sub rel ($;$);
183
184 ## TODO: rel_list
185
186 sub target ($;$);
187
188 sub type ($;$);
189
190 ## TODO: Command
191
192 package Message::DOM::HTML::HTMLAreaElement;
193 push our @ISA, 'Message::DOM::HTML::HTMLElement';
194
195 sub alt ($;$);
196
197 sub coords ($;$);
198
199 ## TODO: href
200
201 sub hreflang ($;$);
202
203 sub media ($;$);
204
205 sub ping ($;$);
206
207 sub rel ($;$);
208
209 ## TODO: rel_list, shape
210
211 sub target ($;$);
212
213 sub type ($;$);
214
215 package Message::DOM::HTML::HTMLAudioElement;
216 push our @ISA, 'Message::DOM::HTML::HTMLMediaElement';
217
218 package Message::DOM::HTML::HTMLBaseElement;
219 push our @ISA, 'Message::DOM::HTML::HTMLElement';
220
221 sub target ($;$);
222
223 ## TODO: href
224
225 package Message::DOM::HTML::HTMLBodyElement;
226 push our @ISA, 'Message::DOM::HTML::HTMLElement';
227
228 ## TODO: DOM2
229
230 package Message::DOM::HTML::HTMLCanvasElement;
231 push our @ISA, 'Message::DOM::HTML::HTMLElement';
232
233 ## TODO
234
235 package Message::DOM::HTML::HTMLCommandElement;
236 push our @ISA, 'Message::DOM::HTML::HTMLElement';
237
238 sub checked ($;$);
239
240 sub default ($;$);
241
242 sub disabled ($;$);
243
244 sub hidden ($;$);
245
246 ## TODO: icon
247
248 sub label ($;$);
249
250 sub radiogroup ($;$);
251
252 sub type ($;$); ## NOTE: This is not an enumerated attribute.
253
254 ## TODO: Command
255
256 package Message::DOM::HTML::HTMLDataGridElement;
257 push our @ISA, 'Message::DOM::HTML::HTMLElement';
258
259 ## TODO
260
261 sub disabled ($;$);
262
263 sub multiple ($;$);
264
265 package Message::DOM::HTML::HTMLDetailsElement;
266 push our @ISA, 'Message::DOM::HTML::HTMLElement';
267
268 sub open ($;$);
269
270 package Message::DOM::HTML::HTMLEmbedElement;
271 push our @ISA, 'Message::DOM::HTML::HTMLElement';
272
273 ## TODO: height, src
274
275 sub type ($;$);
276
277 ## TODO: width
278
279 package Message::DOM::HTML::HTMLEventSourceElement;
280 push our @ISA, 'Message::DOM::HTML::HTMLElement';
281
282 ## TODO: src
283
284 package Message::DOM::HTML::HTMLFontElement;
285 push our @ISA, 'Message::DOM::HTML::HTMLElement';
286
287 ## TODO
288
289 package Message::DOM::HTML::HTMLHeadElement;
290 push our @ISA, 'Message::DOM::HTML::HTMLElement';
291
292 ## TODO: DOM2
293
294 package Message::DOM::HTML::HTMLHtmlElement;
295 push our @ISA, 'Message::DOM::HTML::HTMLElement';
296
297 ## TODO: DOM2
298
299 package Message::DOM::HTML::HTMLIFrameElement;
300 push our @ISA, 'Message::DOM::HTML::HTMLElement';
301
302 ## TODO: src, EmbeddingElement
303
304 package Message::DOM::HTML::HTMLImageElement;
305 push our @ISA, 'Message::DOM::HTML::HTMLElement';
306
307 sub alt ($;$);
308
309 ## TODO: complete
310
311 sub ismap ($;$);
312
313 ## TODO: height, src
314
315 sub usemap ($;$);
316
317 ## TODO: width
318
319 package Message::DOM::HTML::HTMLLIElement;
320 push our @ISA, 'Message::DOM::HTML::HTMLElement';
321
322 ## TODO: value
323
324 package Message::DOM::HTML::HTMLLinkElement;
325 push our @ISA, 'Message::DOM::HTML::HTMLElement';
326
327 ## TODO: disabled, href
328
329 sub hreflang ($;$);
330
331 sub media ($;$);
332
333 sub rel ($;$);
334
335 ## TODO: rel_list
336
337 sub type ($;$);
338
339 ## TODO: LinkStyle
340
341 package Message::DOM::HTML::HTMLMapElement;
342 push our @ISA, 'Message::DOM::HTML::HTMLElement';
343
344 ## TODO
345
346 package Message::DOM::HTML::HTMLMediaElement;
347 push our @ISA, 'Message::DOM::HTML::HTMLElement';
348
349 ## TODO...
350
351 sub controls ($;$);
352
353 package Message::DOM::HTML::HTMLMenuElement;
354 push our @ISA, 'Message::DOM::HTML::HTMLElement';
355
356 sub autosubmit ($;$);
357
358 sub label ($;$);
359
360 ## TODO: type
361
362 package Message::DOM::HTML::HTMLMetaElement;
363 push our @ISA, 'Message::DOM::HTML::HTMLElement';
364
365 sub content ($;$);
366
367 ## TODO: name, http_equiv
368
369 package Message::DOM::HTML::HTMLMeterElement;
370 push our @ISA, 'Message::DOM::HTML::HTMLElement';
371
372 ## TODO: value, min, max, low, high, optimum
373
374 package Message::DOM::HTML::HTMLModElement;
375 push our @ISA, 'Message::DOM::HTML::HTMLElement';
376
377 ## TODO: cite
378
379 sub datetime ($;$);
380
381 package Message::DOM::HTML::HTMLObjectElement;
382 push our @ISA, 'Message::DOM::HTML::HTMLElement';
383
384 ## TODO: data, height
385
386 sub type ($;$);
387
388 sub usemap ($;$);
389
390 ## TODO: width, EmbeddingElement
391
392 package Message::DOM::HTML::HTMLOListElement;
393 push our @ISA, 'Message::DOM::HTML::HTMLElement';
394
395 ## TODO: start
396
397 package Message::DOM::HTML::HTMLParamElement;
398 push our @ISA, 'Message::DOM::HTML::HTMLElement';
399
400 sub name ($;$);
401
402 sub value ($;$);
403
404 package Message::DOM::HTML::HTMLProgressElement;
405 push our @ISA, 'Message::DOM::HTML::HTMLElement';
406
407 ## TODO: value, max, position
408
409 package Message::DOM::HTML::HTMLQuoteElement;
410 push our @ISA, 'Message::DOM::HTML::HTMLElement';
411
412 ## TODO: cite
413
414 package Message::DOM::HTML::HTMLScriptElement;
415 push our @ISA, 'Message::DOM::HTML::HTMLElement';
416
417 sub async ($;$);
418
419 sub defer ($;$);
420
421 ## TODO: src, text
422
423 sub type ($;$);
424
425 package Message::DOM::HTML::HTMLSourceElement;
426 push our @ISA, 'Message::DOM::HTML::HTMLElement';
427
428 sub media ($;$);
429
430 ## TODO: src
431
432 sub type ($;$);
433
434 package Message::DOM::HTML::HTMLStyleElement;
435 push our @ISA, 'Message::DOM::HTML::HTMLElement';
436
437 ## TODO: disabled
438
439 sub media ($;$);
440
441 sub scoped ($;$);
442
443 sub type ($;$);
444
445 package Message::DOM::HTML::HTMLTableElement;
446 push our @ISA, 'Message::DOM::HTML::HTMLElement';
447
448 ## TODO
449
450 package Message::DOM::HTML::HTMLTableCellElement;
451 push our @ISA, 'Message::DOM::HTML::HTMLElement';
452
453 ## TODO
454
455 package Message::DOM::HTML::HTMLTableColElement;
456 push our @ISA, 'Message::DOM::HTML::HTMLElement';
457
458 ## TODO: span
459
460 package Message::DOM::HTML::HTMLTableHeaderCellElement;
461 push our @ISA, 'Message::DOM::HTML::HTMLTableCellElement';
462
463 ## TODO
464
465 package Message::DOM::HTML::HTMLTableRowElement;
466 push our @ISA, 'Message::DOM::HTML::HTMLElement';
467
468 ## TODO
469
470 package Message::DOM::HTML::HTMLTableSectionElement;
471 push our @ISA, 'Message::DOM::HTML::HTMLElement';
472
473 ## TODO
474
475 package Message::DOM::HTML::HTMLTimeElement;
476 push our @ISA, 'Message::DOM::HTML::HTMLElement';
477
478 ## TODO: date
479
480 sub datetime ($;$);
481
482 ## TODO: time, timezone
483
484 package Message::DOM::HTML::HTMLVideoElement;
485 push our @ISA, 'Message::DOM::HTML::HTMLMediaElement';
486
487 ## TODO: video_width, video_height
488
489 =head1 LICENSE
490
491 Copyright 2007 Wakaba <[email protected]>
492
493 This program is free software; you can redistribute it and/or
494 modify it under the same terms as Perl itself.
495
496 =cut
497
498 1;
499 ## $Date: 2008/01/14 13:56:35 $
500

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24