/[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.1 - (hide annotations) (download)
Sun Jul 29 11:38:57 2007 UTC (19 years ago) by wakaba
Branch: MAIN
++ manakai/lib/Message/DOM/ChangeLog	29 Jul 2007 11:38:40 -0000
	* HTML/: New directory.

	* Element.pm (create_element_ns): Return object implementing
	the |HTMLElement| interface for HTML elements.

2007-07-29  Wakaba  <wakaba@suika.fam.cx>

++ manakai/lib/Message/DOM/HTML/ChangeLog	29 Jul 2007 11:37:55 -0000
2007-07-29  Wakaba  <wakaba@suika.fam.cx>

	* ChangeLog: New file.

	* HTMLElement.pm: New module.

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24