/[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.6 - (hide annotations) (download)
Fri Dec 29 14:45:43 2006 UTC (19 years, 7 months ago) by wakaba
Branch: MAIN
Changes since 1.5: +8 -46 lines
++ manakai/t/ChangeLog	29 Dec 2006 13:56:36 -0000
2006-12-29  Wakaba  <wakaba@suika.fam.cx>

	* .cvsignore: New auto-generated Perl test files
	are added.

++ manakai/lib/Message/Util/ChangeLog	29 Dec 2006 13:53:51 -0000
2006-12-29  Wakaba  <wakaba@suika.fam.cx>

	* PerlCode.dis (createPCFile): Removed.
	(createPCDocument): New method.

++ manakai/lib/Message/Util/DIS/ChangeLog	29 Dec 2006 13:54:30 -0000
2006-12-29  Wakaba  <wakaba@suika.fam.cx>

	* Perl.dis (plGeneratePerlModuleFile): Removed.
	(plGeneratePerlModuleDocument): New method.

++ manakai/lib/Message/DOM/ChangeLog	29 Dec 2006 13:53:21 -0000
2006-12-29  Wakaba  <wakaba@suika.fam.cx>

	* TreeCore.dis, DOMCore.dis, Document.dis,
	Element.dis, CharacterData.dis, XML.dis,
	XDoctype.dis, DOMString.dis, TreeStore.dis,
	XMLParser.dis: Use Perl native
	hashs and |Scalar::Util|'s weak references in favor of |Grove.dis|
	for DOM nodes.  See
	also <http://suika.fam.cx/gate/2005/sw/manakai/%E3%83%A1%E3%83%A2/2006-12-29>.

++ manakai/lib/manakai/ChangeLog	29 Dec 2006 13:56:06 -0000
2006-12-29  Wakaba  <wakaba@suika.fam.cx>

	* daf-perl-pm.pl: Use |pl_generate_perl_module_document|
	instead of |pl_generate_perl_module_file|.

	* daf-perl-t.pl: Use |create_pc_document|
	instead of |create_pc_file|.
	(daf_generate_perl_test_file|: Removed.
	(daf_generate_perl_test_document|: New function.

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24