/[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.3 - (hide annotations) (download)
Mon Oct 8 04:48:34 2007 UTC (18 years, 9 months ago) by wakaba
Branch: MAIN
Changes since 1.2: +35 -2 lines
++ manakai/lib/Message/DOM/HTML/ChangeLog	8 Oct 2007 04:48:29 -0000
2007-10-08  Wakaba  <wakaba@suika.fam.cx>

	* HTMLElement.pm (href): Implemented.

++ manakai/lib/Message/DOM/Atom/ChangeLog	8 Oct 2007 04:48:09 -0000
2007-10-08  Wakaba  <wakaba@suika.fam.cx>

	* AtomElement.pm (get_entry_element_by_id): Support
	for |create-child-element| option.

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24