/[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.5 - (hide annotations) (download)
Sat Dec 2 12:46:22 2006 UTC (19 years, 7 months ago) by wakaba
Branch: MAIN
CVS Tags: manakai-200612
Changes since 1.4: +3 -3 lines
++ manakai/t/ChangeLog	2 Dec 2006 12:46:13 -0000
2006-12-02  Wakaba  <wakaba@suika.fam.cx>

	* Makefile (dom-DOMString.t): New test.

++ manakai/bin/ChangeLog	2 Dec 2006 12:35:25 -0000
2006-12-02  Wakaba  <wakaba@suika.fam.cx>

	* daf.pl: Call |get_dom_implementation|
	instead of obsolete |get_implementation|.

	* grep-dis.pl: |lib/manakai/*.pl| is added.

++ manakai/lib/Message/Util/ChangeLog	2 Dec 2006 12:45:49 -0000
2006-12-02  Wakaba  <wakaba@suika.fam.cx>

	* Makefile: |lib/Message/DOM/DOMString.pm| is added.

++ manakai/lib/Message/DOM/ChangeLog	2 Dec 2006 12:45:20 -0000
2006-12-02  Wakaba  <wakaba@suika.fam.cx>

	* DOMString.dis: New module.

	* DOMString.pm: New file.

	* DOMCore.dis (min): Moved from |DOMFeature.dis|.
	(ImplementationRegistryVariable): Moved from |DOMFeature.dis|.
	Now it references the |DOMImplementationRegistry| object.
	(DOMImplementationRegistryVariable): Moved from |DOMMain.dis|.
	(DOMImplementationRegistry): New interface and
	class, reformed from |ImplementationRegistry| in |DOMFeature.dis|
	and |DOMImplementationRegistry| in |DOMMain.dis|.  Note
	that the class no longer support |get_implementation|
	and |get_implementation_list| methods from
	the |ImplementationRegistry| interface.
	(DOMImplementationList): Class implemented; no
	longer inherits from |ImplementationList|.
	(DOMImplementationSource): Class implemented; no
	longer inherits from |ImplementationSource|.  Note that
	the class no longer support |get_implementation|
	and |get_implementation_list| methods from
	the |ImplementationSource| interface.
	(DOMStringList): Removed.

	* DOMFeature.dis (min, ManakaiDOM:DOMHTMLFeature,
	ManakaiDOM:DOMEventsFeature, ManakaiDOM:DOMXMLFeature,
	ManakaiDOM:DOMXMLFeatureXML11, most part of
	documentation for obsolete DOM Level 3 Minimum Implementation
	module, obsolete property name aliases,
	ImplemenationRegistryVar, ImplementationRegistry,
	DEBUG, MIString, ImplementationList, ImplementationSource,
	ManakaiDOM:implID): Removed.

	* DOMMain.dis (Redefine, RedefinedBy, Redefined): Removed.
	(DOMString): Removed.
	(DOMImplementationRegistryVar, DOMImplementationRegistry): Removed.

	* Makefile: |DOMString.pm| is added.

	* TreeCore.dis (is_default_namespace): |null| was
	returned where a false is expected (|null| is
	a false in Perl, but real |false| is appropriate here).

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24