/[suikacvs]/messaging/manakai/lib/Message/DOM/TreeStore.dis
Suika

Contents of /messaging/manakai/lib/Message/DOM/TreeStore.dis

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.8 - (hide annotations) (download)
Sat Dec 30 08:27:46 2006 UTC (19 years, 7 months ago) by wakaba
Branch: MAIN
Changes since 1.7: +3 -8 lines
++ manakai/bin/ChangeLog	30 Dec 2006 06:47:17 -0000
2006-12-30  Wakaba  <wakaba@suika.fam.cx>

	* idl2dis.pl: Removed.

++ manakai/lib/Message/Markup/ChangeLog	30 Dec 2006 08:26:03 -0000
	* Atom.dis, SuikaWiki.dis, H2H.dis: |WithFor|
	and |DefaultFor| properties are removed.

2006-12-30  Wakaba  <wakaba@suika.fam.cx>

++ manakai/lib/Message/Util/ChangeLog	30 Dec 2006 08:26:59 -0000
	* PerlCode.dis: |WithFor| and |DefaultFor| are removed.

2006-12-30  Wakaba  <wakaba@suika.fam.cx>

++ manakai/lib/Message/DOM/ChangeLog	30 Dec 2006 08:25:38 -0000
        GenericLS.dis, TreeCore.dis, DOMString.dis,
        XML.dis, Element.dis, Document.dis, TreeStore,dis,
        Traversal.dis, XDoctype.dis, XMLParser.dis, DOMLS.dis,
        SimpleLS.dis, DOMMain.dis, XDP.dis: |WithFor| specifications
	and |DefaultFor|s are removed.

2006-12-30  Wakaba  <wakaba@suika.fam.cx>

	* CharacterData.dis, DOMCore.dis, DOMFeature.dis,
++ manakai/lib/Message/URI/ChangeLog	30 Dec 2006 08:26:32 -0000
	* Generic.dis: |WithFor| and |DefaultFor| are removed.

2006-12-30  Wakaba  <wakaba@suika.fam.cx>

++ manakai/lib/Message/Charset/ChangeLog	30 Dec 2006 08:24:04 -0000
	* Encode.dis (Require): |WithFor| specifications are removed.
	(DefaultFor): Removed.

2006-12-30  Wakaba  <wakaba@suika.fam.cx>

++ manakai/lib/manakai/ChangeLog	30 Dec 2006 07:46:56 -0000
2006-12-30  Wakaba  <wakaba@suika.fam.cx>

	* dis.pl: Removed.

1 wakaba 1.1 Module:
2     @QName: MDOM|TreeStore
3     @enFN:
4     DOM Tree Store Module
5     @enDesc:
6     The manakai DOM Tree Store Module provides a simple
7     storable representation of a DOM subtree.
8    
9     @Namespace:
10 wakaba 1.2 http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/TreeStore/
11 wakaba 1.1
12     @DISCore:author: DISCore|Wakaba
13     @License: license|Perl+MPL
14     @Date:
15 wakaba 1.8 $Date: 2006/12/30 04:42:54 $
16 wakaba 1.1
17     @Require:
18     @@Module:
19     @@@QName: MDOM|TreeCore
20    
21     Namespace:
22     @c:
23     http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#
24     @cfg:
25     http://suika.fam.cx/www/2006/dom-config/
26     @dis:
27     http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--
28     @doc:
29     http://suika.fam.cx/~wakaba/archive/2005/7/tutorial#
30     @d:
31     http://suika.fam.cx/~wakaba/archive/2004/dom/xdt#
32     @DOMMain:
33     http://suika.fam.cx/~wakaba/archive/2004/dom/main#
34 wakaba 1.3 @domperl:
35     http://suika.fam.cx/~wakaba/archive/2006/dom/perl/
36 wakaba 1.1 @dx:
37     http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#
38     @dxm:
39     http://suika.fam.cx/~wakaba/archive/2004/dis/XML#
40     @ecore:
41     http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/Core/
42     @ev:
43     http://www.w3.org/2001/xml-events
44     @f:
45     http://suika.fam.cx/~wakaba/archive/2004/dom/feature#
46     @fe:
47     http://suika.fam.cx/www/2006/feature/
48     @idl:
49     http://suika.fam.cx/~wakaba/archive/2004/dis/IDL#
50     @infoset:
51     http://www.w3.org/2001/04/infoset#
52     @kwd:
53     http://suika.fam.cx/~wakaba/archive/2005/rfc2119/
54     @lang:
55     http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#
56     @license:
57     http://suika.fam.cx/~wakaba/archive/2004/8/18/license#
58     @ManakaiDOM:
59     http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#
60     @MDOM:
61     http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#ManakaiDOM.
62     @MDOMX:
63     http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#
64     @null:
65     http://suika.fam.cx/~wakaba/-temp/2003/09/27/null
66     @rdf:
67     http://www.w3.org/1999/02/22-rdf-syntax-ns#
68     @t:
69     http://suika.fam.cx/~wakaba/archive/2004/dom/tree#
70     @tc:
71     http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/TreeCore/
72     @td:
73     http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/Document/
74     @te:
75     http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/Element/
76     @test:
77     http://suika.fam.cx/~wakaba/archive/2004/dis/Test#
78     @tst:
79     http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/TreeStore/
80     @tx:
81     http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/XML/
82     @urigen:
83     http://suika.fam.cx/~wakaba/archive/2005/manakai/URI/Generic/
84     @Util:
85     http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/
86     @xml:
87     http://www.w3.org/XML/1998/namespace
88     @xml-dtd:
89     http://www.w3.org/TR/REC-xml
90     @xmlns:
91     http://www.w3.org/2000/xmlns/
92    
93     ElementTypeBinding:
94     @Name: CODE
95     @ElementType:
96     dis:ResourceDef
97     @ShadowContent:
98     @@DISCore:resourceType: DISPerl|BlockCode
99     @@ForCheck: ManakaiDOM|ForClass
100    
101     ElementTypeBinding:
102     @Name: Method
103     @ElementType:
104     dis:ResourceDef
105     @ShadowContent:
106     @@rdf:type: DISLang|Method
107    
108     ElementTypeBinding:
109     @Name: Param
110     @ElementType:
111     dis:ResourceDef
112     @ShadowContent:
113     @@rdf:type: DISLang|MethodParameter
114    
115     ElementTypeBinding:
116     @Name: Return
117     @ElementType:
118     dis:ResourceDef
119     @ShadowContent:
120     @@rdf:type: DISLang|MethodReturn
121    
122     ElementTypeBinding:
123     @Name: nullCase
124     @ElementType:
125     dis:ResourceDef
126     @ShadowContent:
127     @@rdf:type:
128     ManakaiDOM:InCase
129     @@Value:
130     @@@is-null:1
131    
132     ElementTypeBinding:
133     @Name: IFQName
134     @ElementType:
135     dis:QName
136     @ShadowContent:
137     @@ForCheck: ManakaiDOM|ForIF
138    
139     ElementTypeBinding:
140     @Name: ClsQName
141     @ElementType:
142     dis:QName
143     @ShadowContent:
144     @@ForCheck: ManakaiDOM|ForClass
145    
146     ## -- Features
147    
148     ElementTypeBinding:
149     @Name: FeatureDef
150     @ElementType:
151     dis:ResourceDef
152     @ShadowContent:
153     @@rdf:type: f|Feature
154     @@For: =ManakaiDOM|all
155    
156     ElementTypeBinding:
157     @Name: FeatureVerDef
158     @ElementType:
159     dis:ResourceDef
160     @ShadowContent:
161     @@rdf:type: f|Feature
162    
163     ElementTypeBinding:
164     @Name: featureQName
165     @ElementType:
166     f:name
167     @ShadowContent:
168     @@ContentType: DISCore|QName
169    
170     FeatureDef:
171     @QName: TSFeature
172     @featureQName: fe|TreeStore
173     @FeatureVerDef:
174     @@QName: TSFeature30
175     @@f:instanceOf: d|Feature
176     @@Version: 3.0
177     @@f:requires: c|CoreFeature30
178     @@f:requires: tx|XMLFeature30
179    
180     ElementTypeBinding:
181     @Name: IFClsDef
182     @ElementType:
183     dis:ResourceDef
184     @ShadowContent:
185     @@DISCore:resourceType:
186     @@@@: dis|MultipleResource
187     @@@ForCheck: !ManakaiDOM|ForIF !ManakaiDOM|ForClass
188     @@resourceFor: ManakaiDOM|ForIF
189     @@resourceFor:
190     @@@@: ManakaiDOM|ForClass
191    
192     @@DISCore:resourceType:
193     @@@@: DISLang|Interface
194     @@@ForCheck: ManakaiDOM|ForIF
195    
196     @@DISCore:resourceType:
197     @@@@: DISLang|Class
198     @@@ForCheck: ManakaiDOM|ForClass
199 wakaba 1.7
200 wakaba 1.1 @@Implement:
201 wakaba 1.8 @@@@: ||+||ManakaiDOM|ForIF
202 wakaba 1.1 @@@ContentType: DISCore|TFPQNames
203 wakaba 1.8 @@@ForCheck: ManakaiDOM|ForClass
204 wakaba 1.1
205     ElementTypeBinding:
206     @Name: Test
207     @ElementType:
208     dis:ResourceDef
209     @ShadowContent:
210     @@DISCore:resourceType: test|StandaloneTest
211     @@ForCheck: ManakaiDOM|ForClass
212    
213     ## -- Implementation
214    
215     IFClsDef:
216     @IFQName: DOMImplementationTreeStore
217     @ClsQName: ManakaiDOMImplementationTreeStore
218    
219 wakaba 1.3 @domperl:implementedByObjectsOf: c|DOMImplementation
220     @domperl:classImplementedByObjectsOf: c|ManakaiDOMImplementation
221    
222 wakaba 1.1 @f:provides: TSFeature30
223 wakaba 1.4 @f:implements: TSFeature30
224 wakaba 1.1
225     @Test:
226 wakaba 1.3 @@QName: DOMImplementationTreeStore.interface.1.test
227     @@PerlDef:
228     $test->assert_true
229     (<Class::c|ManakaiDOMImplementation>->isa
230     (<IFName::DOMImplementationTreeStore>));
231     @Test:
232     @@QName: DOMImplementationTreeStore.class.1.test
233     @@PerlDef:
234     $test->assert_true
235     (<Class::c|ManakaiDOMImplementation>->isa
236     (<IFName::ManakaiDOMImplementationTreeStore>));
237    
238     @Test:
239 wakaba 1.1 @@QName: ImplementationRegistry.getImplementation.1.test
240     @@PerlDef:
241     my $impl = $Message::DOM::ImplementationRegistry
242 wakaba 1.5 ->get_dom_implementation ({<Q::fe|TreeStore> => '3.0'});
243 wakaba 1.1
244     $test->id ('DOMImplementationTreeStore');
245 wakaba 1.4 $test->assert_isa ($impl, <ClassName::ManakaiDOMImplementationTreeStore>);
246 wakaba 1.1
247     $test->id ('DOMImplementationTree');
248     $test->assert_isa ($impl, <IFName::c|DOMImplementation>);
249     @Test:
250     @@QName: ImplementationRegistry.getImplementation.2.test
251     @@PerlDef:
252     my $impl = $Message::DOM::ImplementationRegistry
253 wakaba 1.5 ->get_dom_implementation ({<Q::fe|TreeStore> => '3.0',
254 wakaba 1.1 Core => '3.0'});
255    
256     $test->id ('DOMImplementationTreeStore');
257 wakaba 1.4 $test->assert_isa ($impl, <ClassName::ManakaiDOMImplementationTreeStore>);
258 wakaba 1.1
259     $test->id ('DOMImplementationTree');
260     $test->assert_isa ($impl, <IFName::c|DOMImplementation>);
261     @Test:
262     @@QName: DOMImplementation.getFeature.1.test
263     @@PerlDef:
264     my $impl;
265     __CODE{tc|createImplForTest:: $impl => $impl}__;
266    
267     my $gf = $impl->get_feature (<Q::fe|TreeStore> => '3.0');
268    
269     $test->id ('DOMImplementationTreeStore');
270 wakaba 1.4 $test->assert_isa ($gf, <ClassName::ManakaiDOMImplementationTreeStore>);
271 wakaba 1.1
272     $test->id ('DOMImplementationTree');
273     $test->assert_isa ($gf, <IFName::c|DOMImplementation>);
274    
275     @CODE:
276     @@QName: tst|createImplForTest
277     @@PerlDef:
278 wakaba 1.3 $impl = <Class::c|ManakaiDOMImplementation>->_new;
279 wakaba 1.1
280     @Method:
281     @@Name: createStorableObjectFromNode
282     @@enDesc:
283     Creates a storable representation of the <IF::tc|Node>
284     and its subtree.
285     @@Param:
286     @@@Name: in
287     @@@Type: tc|Node
288     @@@enDesc:
289     The original <IF::tc|Node> to convert.
290     @@Return:
291     @@@Type: StorableObject
292     @@@enDesc:
293     A storable representation of the <P::in> node.
294     @@@dx:raises:
295     @@@@@: c|CLONE_NODE_TYPE_NOT_SUPPORTED_ERR
296     @@@@enDesc:
297     If the <P::in> node is of type other than
298     <IF::td|Document>, <IF::td|DocumentFragment>,
299     <IF::te|Element>, <IF::te|Attr>,
300     <IF::tc|Text>, or <IF::tx|CDATASection>.
301     @@@PerlDef:
302     if ({
303     <C::tc|Node.DOCUMENT_NODE> => true,
304     <C::tc|Node.DOCUMENT_FRAGMENT_NODE> => true,
305     <C::tc|Node.ELEMENT_NODE> => true,
306     <C::tc|Node.ATTRIBUTE_NODE> => true,
307     <C::tc|Node.TEXT_NODE> => true,
308     <C::tc|Node.CDATA_SECTION_NODE> => true,
309     }->{$in-><AG::tc|Node.nodeType>}) {
310     my @target = ([$in, # node
311     null]); # origin
312    
313     while (@target) {
314     my $target = shift @target;
315     my $tnt = $target->[0]-><AG::tc|Node.nodeType>;
316     if ($tnt == <C::tc|Node.ELEMENT_NODE>) {
317     my $v = {};
318    
319 wakaba 1.6 my $pv = ${$target->[0]}->{<H::infoset|namespaceName>};
320 wakaba 1.1 $v->{namespace_uri} = $pv if defined $pv;
321    
322 wakaba 1.6 $pv = ${$target->[0]}->{<H::infoset|localName>};
323 wakaba 1.1 $v->{local_name} = $pv;
324    
325 wakaba 1.6 $pv = ${$target->[0]}->{<H::infoset|prefix>};
326 wakaba 1.1 $v->{prefix} = $pv if defined $pv;
327    
328     for (@{$target->[0]-><AG::tc|Node.childNodes>}) {
329     push @target, [$_, $v];
330     }
331     for (@{$target->[0]-><AG::tc|Node.attributes>}) {
332     push @target, [$_, $v];
333     }
334     if (defined $target->[1]) {
335     push @{$target->[1]->{child_nodes} ||= []}, $v;
336     } else {
337     $r = $v unless defined $r;
338     }
339     } elsif ($tnt == <C::tc|Node.ATTRIBUTE_NODE>) {
340     my $v = {
341     value => \ $target->[0]-><AG::te|Attr.value>,
342     };
343    
344 wakaba 1.6 my $pv = ${$target->[0]}->{<H::infoset|namespaceName>};
345 wakaba 1.1 $v->{namespace_uri} = $pv if defined $pv;
346    
347 wakaba 1.6 $pv = ${$target->[0]}->{<H::infoset|localName>};
348 wakaba 1.1 $v->{local_name} = $pv;
349    
350 wakaba 1.6 $pv = ${$target->[0]}->{<H::infoset|prefix>};
351 wakaba 1.1 $v->{prefix} = $pv if defined $pv;
352    
353     if (defined $target->[1]) {
354     push @{$target->[1]->{attributes} ||= []}, $v;
355     } else {
356     $r = $v unless defined $r;
357     }
358     } elsif ($tnt == <C::tc|Node.TEXT_NODE> or
359     $tnt == <C::tc|Node.CDATA_SECTION_NODE>) {
360     my $v = {};
361 wakaba 1.6 $v->{data} = ${$target->[0]}->{<H::infoset|content>};
362 wakaba 1.1
363     if (defined $target->[1]) {
364     push @{$target->[1]->{child_nodes} ||= []}, $v;
365     } else {
366     $r = $v unless defined $r;
367     }
368     } elsif ($tnt == <C::tc|Node.DOCUMENT_NODE>) {
369     my $v = {
370     xml_version => $target->[0]-><AG::td|Document.xmlVersion>,
371     };
372    
373     for (@{$target->[0]-><AG::tc|Node.childNodes>}) {
374     push @target, [$_, $v];
375     }
376     $r = $v unless defined $r;
377     } elsif ($tnt == <C::tc|Node.DOCUMENT_FRAGMENT_NODE>) {
378     my $v = {};
379    
380     for (@{$target->[0]-><AG::tc|Node.childNodes>}) {
381     push @target, [$_, $v];
382     }
383     $r = $v unless defined $r;
384     } elsif ($tnt == <C::tc|Node.ENTITY_REFERENCE_NODE>) {
385     for (@{$target->[0]-><AG::tc|Node.childNodes>}) {
386     push @target, [$_, $target->[1]];
387     }
388     }
389     }
390     } else {
391     __EXCEPTION{c|CLONE_NODE_TYPE_NOT_SUPPORTED_ERR::
392     MDOMX|param-name => 'in',
393     c|node => {$in},
394     }__;
395     }
396    
397     @Method:
398     @@Name: createNodeFromStorableObject
399     @@enDesc:
400     Creates a <IF::tc|Node> and its subtree from a storable representation.
401     @@Param:
402     @@@Name: in
403     @@@Type: StorableObject
404     @@@enDesc:
405     The original node storable representation to convert.
406     @@Param:
407     @@@Name: od
408     @@@Type: td|Document
409     @@@enDesc:
410     The owner document to which the generated nodes
411     belong. If the top-level <P::in> object represents
412     a document, this parameter <kwd:MUST> be ignored.
413     @@@nullCase:
414     @@@@enDesc:
415     A new empty <IF::td|Document> is created. If the top-level
416     <P::in> object represents a document, the created <IF::td|Document>
417     <kwd:MUST> be modified so that it represents that document.
418     @@Return:
419     @@@Type: tc|Node
420     @@@enDesc:
421     A <IF::tc|Node> created from the top-level <P::in> object.
422     @@@PerlDef:
423     __DEEP{
424     $od = $self-><M::c|DOMImplementation.createDocument>;
425     my $orig_strict = $od-><AG::td|Document.strictErrorChecking>;
426     $od-><AS::td|Document.strictErrorChecking> (false);
427    
428     my @target = ([$in,
429     null, # parent node
430     null]); # owner element
431     while (@target) {
432     my $target = shift @target;
433     if (defined $target->[0]->{local_name}) {
434     if (defined $target->[0]->{value}) {
435     # Attribute
436     my $node = $od-><M::td|Document.createAttributeNS>
437     ($target->[0]->{namespace_uri},
438     [$target->[0]->{prefix},
439     $target->[0]->{local_name}]);
440     $node-><M::tc|Node.manakaiAppendText> ($target->[0]->{value});
441     if (defined $target->[2]) {
442     $target->[2]-><M::te|Element.setAttributeNodeNS> ($node);
443     } else {
444     $r = $node unless defined $r;
445     }
446     } else {
447     # Element
448     my $node = $od-><M::td|Document.createElementNS>
449     ($target->[0]->{namespace_uri},
450     [$target->[0]->{prefix},
451     $target->[0]->{local_name}]);
452     for (@{ref $target->[0]->{child_nodes} eq 'ARRAY'
453     ? $target->[0]->{child_nodes} : []}) {
454     push @target, [$_, $node];
455     }
456     for (@{ref $target->[0]->{attributes} eq 'ARRAY'
457     ? $target->[0]->{attributes} : []}) {
458     push @target, [$_, null, $node];
459     }
460     if (defined $target->[1]) {
461     $target->[1]-><M::tc|Node.appendChild> ($node);
462     } else {
463     $r = $node unless defined $r;
464     }
465     }
466     } elsif (defined $target->[0]->{data}) {
467     # Text
468     if (defined $target->[1]) {
469     $target->[1]-><M::tc|Node.manakaiAppendText>
470     ($target->[0]->{data});
471     } elsif (not defined $r) {
472     $r = $od-><M::td|Document.createTextNode> ('');
473     $r-><M::tc|Node.manakaiAppendText> ($target->[0]->{data});
474     }
475     } elsif (defined $target->[0]->{xml_version}) {
476     # Document
477     my $node = $self-><M::c|DOMImplementation.createDocument>;
478     $node-><AS::td|Document.strictErrorChecking> (false);
479     $node-><AG::td|Document.domConfig>
480     -><M::c|DOMConfiguration.setParameter>
481     (<Q::cfg|strict-document-children> => false);
482     $node-><AS::td|Document.xmlVersion> ($target->[0]->{xml_version});
483     for (@{ref $target->[0]->{child_nodes} eq 'ARRAY'
484     ? $target->[0]->{child_nodes} : []}) {
485     push @target, [$_, $node];
486     }
487     unless (defined $r) {
488     $r = $node;
489     $od = $node;
490     $orig_strict = true;
491     }
492     } else {
493     # Document fragment
494     unless (defined $r) {
495     $r = $od-><M::td|Document.createDocumentFragment>;
496     for (@{ref $target->[0]->{child_nodes} eq 'ARRAY'
497     ? $target->[0]->{child_nodes} : []}) {
498     push @target, [$_, $r];
499     }
500     }
501     }
502     }
503     $od-><AS::td|Document.strictErrorChecking> ($orig_strict);
504     if ($r-><AG::tc|Node.nodeType> == <C::tc|Node.DOCUMENT_NODE>) {
505     $r-><AG::td|Document.domConfig>
506     -><M::c|DOMConfiguration.setParameter>
507     (<Q::cfg|strict-document-children> => null);
508     }
509     }__;
510    
511     @Test:
512     @@QName: TreeStore.1.test
513     @@enDesc:
514     A non-NS element.
515     @@PerlDef:
516     my $impl;
517     __CODE{tst|createImplForTest:: $impl => $impl}__;
518    
519     my $doc = $impl->create_document;
520    
521     my $e1 = $doc->create_element_ns (null, 'element');
522    
523     my $e2 = $impl->create_storable_object_from_node ($e1);
524    
525     my $e3 = $impl->create_node_from_storable_object ($e2);
526    
527     $test->assert_num_equals
528     (actual_value => $e3,
529     expected_value => $e1);
530     @Test:
531     @@QName: TreeStore.2.test
532     @@enDesc:
533     An NS element.
534     @@PerlDef:
535     my $impl;
536     __CODE{tst|createImplForTest:: $impl => $impl}__;
537    
538     my $doc = $impl->create_document;
539    
540     my $e1 = $doc->create_element_ns ('about:', 'a:element');
541    
542     my $e2 = $impl->create_storable_object_from_node ($e1);
543    
544     my $e3 = $impl->create_node_from_storable_object ($e2);
545    
546     $test->assert_num_equals
547     (actual_value => $e3,
548     expected_value => $e1);
549     @Test:
550     @@QName: TreeStore.3.test
551     @@enDesc:
552     A non-NS attribute.
553     @@PerlDef:
554     my $impl;
555     __CODE{tst|createImplForTest:: $impl => $impl}__;
556    
557     my $doc = $impl->create_document;
558    
559     my $e1 = $doc->create_attribute_ns (null, 'element');
560     $e1->value ('attr value');
561    
562     my $e2 = $impl->create_storable_object_from_node ($e1);
563    
564     my $e3 = $impl->create_node_from_storable_object ($e2);
565    
566     $test->assert_num_equals
567     (actual_value => $e3,
568     expected_value => $e1);
569     @Test:
570     @@QName: TreeStore.4.test
571     @@enDesc:
572     An NS attribute.
573     @@PerlDef:
574     my $impl;
575     __CODE{tst|createImplForTest:: $impl => $impl}__;
576    
577     my $doc = $impl->create_document;
578    
579     my $e1 = $doc->create_attribute_ns ('about:', 'a:element');
580     $e1->value ('attr value');
581    
582     my $e2 = $impl->create_storable_object_from_node ($e1);
583    
584     my $e3 = $impl->create_node_from_storable_object ($e2);
585    
586     $test->assert_num_equals
587     (actual_value => $e3,
588     expected_value => $e1);
589     @Test:
590     @@QName: TreeStore.5.test
591     @@enDesc:
592     A text.
593     @@PerlDef:
594     my $impl;
595     __CODE{tst|createImplForTest:: $impl => $impl}__;
596    
597     my $doc = $impl->create_document;
598    
599     my $e1 = $doc->create_text_node ('text value');
600    
601     my $e2 = $impl->create_storable_object_from_node ($e1);
602    
603     my $e3 = $impl->create_node_from_storable_object ($e2);
604    
605     $test->assert_num_equals
606     (actual_value => $e3,
607     expected_value => $e1);
608     @Test:
609     @@QName: TreeStore.6.test
610     @@enDesc:
611     A cdata section.
612     @@PerlDef:
613     my $impl;
614     __CODE{tst|createImplForTest:: $impl => $impl}__;
615    
616     my $doc = $impl->create_document;
617    
618     my $e1 = $doc->create_cdata_section ('text value');
619    
620     my $e2 = $impl->create_storable_object_from_node ($e1);
621    
622     my $e3 = $impl->create_node_from_storable_object ($e2);
623    
624     $test->id ('nodeType');
625     $test->assert_num_equals
626     (actual_value => $e3->node_type,
627     expected_value => <C::tc|Node.TEXT_NODE>);
628    
629     $test->id ('nodeValue');
630     $test->assert_equals
631     ($e3->node_value, $e1->node_value);
632     @Test:
633     @@QName: TreeStore.7.test
634     @@enDesc:
635     A document.
636     @@PerlDef:
637     my $impl;
638     __CODE{tst|createImplForTest:: $impl => $impl}__;
639    
640     my $doc = $impl->create_document;
641    
642     my $e1 = $doc;
643    
644     my $e2 = $impl->create_storable_object_from_node ($e1);
645    
646     my $e3 = $impl->create_node_from_storable_object ($e2);
647    
648     $test->assert_num_equals
649     (actual_value => $e3,
650     expected_value => $e1);
651     @Test:
652     @@QName: TreeStore.8.test
653     @@enDesc:
654     A document fragment.
655     @@PerlDef:
656     my $impl;
657     __CODE{tst|createImplForTest:: $impl => $impl}__;
658    
659     my $doc = $impl->create_document;
660    
661     my $e1 = $doc->create_document_fragment;
662    
663     my $e2 = $impl->create_storable_object_from_node ($e1);
664    
665     my $e3 = $impl->create_node_from_storable_object ($e2);
666    
667     $test->assert_num_equals
668     (actual_value => $e3,
669     expected_value => $e1);
670     @Test:
671     @@QName: TreeStore.9.test
672     @@enDesc:
673     A nesting element.
674     @@PerlDef:
675     my $impl;
676     __CODE{tst|createImplForTest:: $impl => $impl}__;
677    
678     my $doc = $impl->create_document;
679    
680     my $e1 = $doc->create_element_ns (null, 'el1');
681     $e1->append_child ($doc->create_element_ns (null, 'el2'));
682    
683     my $e2 = $impl->create_storable_object_from_node ($e1);
684    
685     my $e3 = $impl->create_node_from_storable_object ($e2);
686    
687     $test->assert_num_equals
688     (actual_value => $e3,
689     expected_value => $e1);
690     @Test:
691     @@QName: TreeStore.10.test
692     @@enDesc:
693     A nesting element with text.
694     @@PerlDef:
695     my $impl;
696     __CODE{tst|createImplForTest:: $impl => $impl}__;
697    
698     my $doc = $impl->create_document;
699    
700     my $e1 = $doc->create_element_ns (null, 'el1');
701     $e1->manakai_append_text ('text value');
702     $e1->append_child ($doc->create_element_ns (null, 'el2'));
703    
704     my $e2 = $impl->create_storable_object_from_node ($e1);
705    
706     my $e3 = $impl->create_node_from_storable_object ($e2);
707    
708     $test->assert_num_equals
709     (actual_value => $e3,
710     expected_value => $e1);
711     @Test:
712     @@QName: TreeStore.12.test
713     @@enDesc:
714     An element with attributes.
715     @@PerlDef:
716     my $impl;
717     __CODE{tst|createImplForTest:: $impl => $impl}__;
718    
719     my $doc = $impl->create_document;
720    
721     my $e1 = $doc->create_element_ns (null, 'el1');
722     $e1->set_attribute (a => 'b');
723     $e1->set_attribute_ns ('about:', 'b:c', 'd');
724    
725     my $e2 = $impl->create_storable_object_from_node ($e1);
726    
727     my $e3 = $impl->create_node_from_storable_object ($e2);
728    
729     $test->assert_num_equals
730     (actual_value => $e3,
731     expected_value => $e1);
732     @Test:
733     @@QName: TreeStore.13.test
734     @@enDesc:
735     A document with element.
736     @@PerlDef:
737     my $impl;
738     __CODE{tst|createImplForTest:: $impl => $impl}__;
739    
740     my $doc = $impl->create_document;
741    
742     my $e1 = $doc;
743     $doc->append_child ($doc->create_element_ns (null, 'el1'));
744    
745     my $e2 = $impl->create_storable_object_from_node ($e1);
746    
747     my $e3 = $impl->create_node_from_storable_object ($e2);
748    
749     $test->assert_num_equals
750     (actual_value => $e3,
751     expected_value => $e1);
752     @Test:
753     @@QName: TreeStore.14.test
754     @@enDesc:
755     A document fragment with element.
756     @@PerlDef:
757     my $impl;
758     __CODE{tst|createImplForTest:: $impl => $impl}__;
759    
760     my $doc = $impl->create_document;
761    
762     my $e1 = $doc->create_document_fragment;
763     $e1->append_child ($doc->create_element_ns (null, 'el1'));
764    
765     my $e2 = $impl->create_storable_object_from_node ($e1);
766    
767     my $e3 = $impl->create_node_from_storable_object ($e2);
768    
769     $test->assert_num_equals
770     (actual_value => $e3,
771     expected_value => $e1);
772     ##DOMImplementationTreeStore
773    
774     ResourceDef:
775     @QName: StorableObject
776     @AliasFor: DOMMain|DOMObject
777    
778     ElementTypeBinding:
779     @Name: enDesc
780     @ElementType:
781     dis:Description
782     @ShadowContent:
783     @@lang:en
784    
785     ElementTypeBinding:
786     @Name: enImplNote
787     @ElementType:
788     dis:ImplNote
789     @ShadowContent:
790     @@lang:en
791    
792     ElementTypeBinding:
793     @Name: enFN
794     @ElementType:
795     dis:FullName
796     @ShadowContent:
797     @@lang:en
798    
799     ElementTypeBinding:
800     @Name: PerlDef
801     @ElementType:
802     dis:Def
803     @ShadowContent:
804     @@ContentType:
805     lang:Perl
806     @@ForCheck: ManakaiDOM|ForClass

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24