/[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.3 - (hide annotations) (download)
Fri Nov 3 17:53:33 2006 UTC (19 years, 8 months ago) by wakaba
Branch: MAIN
Changes since 1.2: +27 -18 lines
++ manakai/bin/ChangeLog	3 Nov 2006 11:50:21 -0000
2006-11-03  Wakaba  <wakaba@suika.fam.cx>

	* grep-dis.pl: New script.

++ manakai/lib/Message/Util/ChangeLog	3 Nov 2006 17:49:43 -0000
2006-11-03  Wakaba  <wakaba@suika.fam.cx>

	* autoload/: New directory.

	* DIS.dis (getPropertyResourceList): Unused |defaultMediaType|
	parameter is deleted.  New |isaRecursivePropName|
	and |recursiveISAPropName| parameters are added.

	* PerlCode.dis (addRevISAPackageName, getRevISAPackageName):
	New methods.
	(stringify): Support for the rev-ISA packages is added.
	(getAutoloadDefinitionList): New method.

++ manakai/lib/Message/Util/DIS/ChangeLog	3 Nov 2006 17:51:23 -0000
2006-11-03  Wakaba  <wakaba@suika.fam.cx>

	* Perl.dis (plCodeFragment): Don't generate
	method parameter code if |DISPerl:noParameterModification|
	property is set.  Support for the |domperl:classExtends|
	and |domperl:classImplementedByObjectsOf| property
	is added.

++ manakai/lib/Message/DOM/ChangeLog	3 Nov 2006 17:47:28 -0000
2006-11-04  Wakaba  <wakaba@suika.fam.cx>

	* DOMCore.dis (ManakaiDOMImplementation): No longer
	explicitly inherits |tc:ManakaiDOMImplementationTC|.
	(ManakaiDOMImplementation.AUTOLOAD): New method definition.

	* TreeCore.dis (ManakaiDOMImplementationTC): Extends
	the |ManakaiDOMImplementation| class.

2006-11-03  Wakaba  <wakaba@suika.fam.cx>

	* DOMFeature.dis: Definitions for various concepts
	are added.

	* GenericLS.dis (GLSImplementation): It no
	longer inherits the |MinimumImplementation|; rather,
	any |ManakaiMinimumImplementation| object also
	implements |GLSImplementation| methods.

	* TreeStore.dis (DOMImplementationTreeStore): It no
	longer inherits the |DOMImplementation|; rather,
	any |ManakaiDOMImplementation| object also
	implements |DOMImplementationTreeStore| methods.

++ manakai/lib/manakai/ChangeLog	3 Nov 2006 17:53:26 -0000
2006-11-03  Wakaba  <wakaba@suika.fam.cx>

	* DISLang.dis (DISLang:AnyObject): New.
	(DISLang:extends, DISLang:implements): New.

	* DISPerl.dis (p:revISA): New.
	(p:noParameterModification): New.

	* daf-perl-pm.pl (daf_perl_pm): Update
	the |Message::Util::AutoLoad::Registry| module
	after the Perl module is generated.

++ manakai/lib/ChangeLog	3 Nov 2006 17:42:27 -0000
2006-11-04  Wakaba  <wakaba@suika.fam.cx>

	* Makefile (all): Make |Message/Util/AutoLoad/Registry.pm|.

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.3 $Date: 2006/08/15 03:54:37 $
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     @DISLang:role:
244     @@@: DISLang|NullRole
245     @@DISCore:stopISARecursive: 1
246     @@enImplNote:
247     {TODO::
248     Remove this property
249     }
250 wakaba 1.1
251     @f:provides: TSFeature30
252    
253     @Test:
254 wakaba 1.3 @@QName: DOMImplementationTreeStore.interface.1.test
255     @@PerlDef:
256     $test->assert_true
257     (<Class::c|ManakaiDOMImplementation>->isa
258     (<IFName::DOMImplementationTreeStore>));
259     @Test:
260     @@QName: DOMImplementationTreeStore.class.1.test
261     @@PerlDef:
262     $test->assert_true
263     (<Class::c|ManakaiDOMImplementation>->isa
264     (<IFName::ManakaiDOMImplementationTreeStore>));
265    
266     @Test:
267 wakaba 1.1 @@QName: ImplementationRegistry.getImplementation.1.test
268     @@PerlDef:
269     my $impl = $Message::DOM::ImplementationRegistry
270     ->get_implementation ({<Q::fe|TreeStore> => '3.0'});
271    
272     $test->id ('DOMImplementationTreeStore');
273     $test->assert_isa ($impl, <IFName::DOMImplementationTreeStore>);
274    
275     $test->id ('DOMImplementationTree');
276     $test->assert_isa ($impl, <IFName::c|DOMImplementation>);
277     @Test:
278     @@QName: ImplementationRegistry.getImplementation.2.test
279     @@PerlDef:
280     my $impl = $Message::DOM::ImplementationRegistry
281     ->get_implementation ({<Q::fe|TreeStore> => '3.0',
282     Core => '3.0'});
283    
284     $test->id ('DOMImplementationTreeStore');
285     $test->assert_isa ($impl, <IFName::DOMImplementationTreeStore>);
286    
287     $test->id ('DOMImplementationTree');
288     $test->assert_isa ($impl, <IFName::c|DOMImplementation>);
289     @Test:
290     @@QName: DOMImplementation.getFeature.1.test
291     @@PerlDef:
292     my $impl;
293     __CODE{tc|createImplForTest:: $impl => $impl}__;
294    
295     my $gf = $impl->get_feature (<Q::fe|TreeStore> => '3.0');
296    
297     $test->id ('DOMImplementationTreeStore');
298     $test->assert_isa ($gf, <IFName::DOMImplementationTreeStore>);
299    
300     $test->id ('DOMImplementationTree');
301     $test->assert_isa ($gf, <IFName::c|DOMImplementation>);
302    
303     @CODE:
304     @@QName: tst|createImplForTest
305     @@PerlDef:
306 wakaba 1.3 $impl = <Class::c|ManakaiDOMImplementation>->_new;
307 wakaba 1.1
308     @Method:
309     @@Name: createStorableObjectFromNode
310     @@enDesc:
311     Creates a storable representation of the <IF::tc|Node>
312     and its subtree.
313     @@Param:
314     @@@Name: in
315     @@@Type: tc|Node
316     @@@enDesc:
317     The original <IF::tc|Node> to convert.
318     @@Return:
319     @@@Type: StorableObject
320     @@@enDesc:
321     A storable representation of the <P::in> node.
322     @@@dx:raises:
323     @@@@@: c|CLONE_NODE_TYPE_NOT_SUPPORTED_ERR
324     @@@@enDesc:
325     If the <P::in> node is of type other than
326     <IF::td|Document>, <IF::td|DocumentFragment>,
327     <IF::te|Element>, <IF::te|Attr>,
328     <IF::tc|Text>, or <IF::tx|CDATASection>.
329     @@@PerlDef:
330     if ({
331     <C::tc|Node.DOCUMENT_NODE> => true,
332     <C::tc|Node.DOCUMENT_FRAGMENT_NODE> => true,
333     <C::tc|Node.ELEMENT_NODE> => true,
334     <C::tc|Node.ATTRIBUTE_NODE> => true,
335     <C::tc|Node.TEXT_NODE> => true,
336     <C::tc|Node.CDATA_SECTION_NODE> => true,
337     }->{$in-><AG::tc|Node.nodeType>}) {
338     my @target = ([$in, # node
339     null]); # origin
340    
341     while (@target) {
342     my $target = shift @target;
343     my $tnt = $target->[0]-><AG::tc|Node.nodeType>;
344     if ($tnt == <C::tc|Node.ELEMENT_NODE>) {
345     my $v = {};
346    
347     my $pv;
348     __CODE{mg|getNodeStemPropValue||ManakaiDOM|all::
349     $r => $pv,
350     $prop => {<H::infoset|namespaceName>},
351     $ref => {$target->[0]},
352     }__;
353     $v->{namespace_uri} = $pv if defined $pv;
354    
355     __CODE{mg|getNodeStemPropValue||ManakaiDOM|all::
356     $r => $pv,
357     $prop => {<H::infoset|localName>},
358     $ref => {$target->[0]},
359     }__;
360     $v->{local_name} = $pv;
361    
362     __CODE{mg|getNodeStemPropValue||ManakaiDOM|all::
363     $r => $pv,
364     $prop => {<H::infoset|prefix>},
365     $ref => {$target->[0]},
366     }__;
367     $v->{prefix} = $pv if defined $pv;
368    
369     for (@{$target->[0]-><AG::tc|Node.childNodes>}) {
370     push @target, [$_, $v];
371     }
372     for (@{$target->[0]-><AG::tc|Node.attributes>}) {
373     push @target, [$_, $v];
374     }
375     if (defined $target->[1]) {
376     push @{$target->[1]->{child_nodes} ||= []}, $v;
377     } else {
378     $r = $v unless defined $r;
379     }
380     } elsif ($tnt == <C::tc|Node.ATTRIBUTE_NODE>) {
381     my $v = {
382     value => \ $target->[0]-><AG::te|Attr.value>,
383     };
384    
385     my $pv;
386     __CODE{mg|getNodeStemPropValue||ManakaiDOM|all::
387     $r => $pv,
388     $prop => {<H::infoset|namespaceName>},
389     $ref => {$target->[0]},
390     }__;
391     $v->{namespace_uri} = $pv if defined $pv;
392    
393     __CODE{mg|getNodeStemPropValue||ManakaiDOM|all::
394     $r => $pv,
395     $prop => {<H::infoset|localName>},
396     $ref => {$target->[0]},
397     }__;
398     $v->{local_name} = $pv;
399    
400     __CODE{mg|getNodeStemPropValue||ManakaiDOM|all::
401     $r => $pv,
402     $prop => {<H::infoset|prefix>},
403     $ref => {$target->[0]},
404     }__;
405     $v->{prefix} = $pv if defined $pv;
406    
407     if (defined $target->[1]) {
408     push @{$target->[1]->{attributes} ||= []}, $v;
409     } else {
410     $r = $v unless defined $r;
411     }
412     } elsif ($tnt == <C::tc|Node.TEXT_NODE> or
413     $tnt == <C::tc|Node.CDATA_SECTION_NODE>) {
414     my $v = {};
415     __CODE{mg|getNodeStemPropValue||ManakaiDOM|all::
416     $r => {$v->{data}},
417     $prop => {<H::infoset|content>},
418     $ref => {$target->[0]},
419     }__;
420    
421     if (defined $target->[1]) {
422     push @{$target->[1]->{child_nodes} ||= []}, $v;
423     } else {
424     $r = $v unless defined $r;
425     }
426     } elsif ($tnt == <C::tc|Node.DOCUMENT_NODE>) {
427     my $v = {
428     xml_version => $target->[0]-><AG::td|Document.xmlVersion>,
429     };
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.DOCUMENT_FRAGMENT_NODE>) {
436     my $v = {};
437    
438     for (@{$target->[0]-><AG::tc|Node.childNodes>}) {
439     push @target, [$_, $v];
440     }
441     $r = $v unless defined $r;
442     } elsif ($tnt == <C::tc|Node.ENTITY_REFERENCE_NODE>) {
443     for (@{$target->[0]-><AG::tc|Node.childNodes>}) {
444     push @target, [$_, $target->[1]];
445     }
446     }
447     }
448     } else {
449     __EXCEPTION{c|CLONE_NODE_TYPE_NOT_SUPPORTED_ERR::
450     MDOMX|param-name => 'in',
451     c|node => {$in},
452     }__;
453     }
454    
455     @Method:
456     @@Name: createNodeFromStorableObject
457     @@enDesc:
458     Creates a <IF::tc|Node> and its subtree from a storable representation.
459     @@Param:
460     @@@Name: in
461     @@@Type: StorableObject
462     @@@enDesc:
463     The original node storable representation to convert.
464     @@Param:
465     @@@Name: od
466     @@@Type: td|Document
467     @@@enDesc:
468     The owner document to which the generated nodes
469     belong. If the top-level <P::in> object represents
470     a document, this parameter <kwd:MUST> be ignored.
471     @@@nullCase:
472     @@@@enDesc:
473     A new empty <IF::td|Document> is created. If the top-level
474     <P::in> object represents a document, the created <IF::td|Document>
475     <kwd:MUST> be modified so that it represents that document.
476     @@Return:
477     @@@Type: tc|Node
478     @@@enDesc:
479     A <IF::tc|Node> created from the top-level <P::in> object.
480     @@@PerlDef:
481     __DEEP{
482     $od = $self-><M::c|DOMImplementation.createDocument>;
483     my $orig_strict = $od-><AG::td|Document.strictErrorChecking>;
484     $od-><AS::td|Document.strictErrorChecking> (false);
485    
486     my @target = ([$in,
487     null, # parent node
488     null]); # owner element
489     while (@target) {
490     my $target = shift @target;
491     if (defined $target->[0]->{local_name}) {
492     if (defined $target->[0]->{value}) {
493     # Attribute
494     my $node = $od-><M::td|Document.createAttributeNS>
495     ($target->[0]->{namespace_uri},
496     [$target->[0]->{prefix},
497     $target->[0]->{local_name}]);
498     $node-><M::tc|Node.manakaiAppendText> ($target->[0]->{value});
499     if (defined $target->[2]) {
500     $target->[2]-><M::te|Element.setAttributeNodeNS> ($node);
501     } else {
502     $r = $node unless defined $r;
503     }
504     } else {
505     # Element
506     my $node = $od-><M::td|Document.createElementNS>
507     ($target->[0]->{namespace_uri},
508     [$target->[0]->{prefix},
509     $target->[0]->{local_name}]);
510     for (@{ref $target->[0]->{child_nodes} eq 'ARRAY'
511     ? $target->[0]->{child_nodes} : []}) {
512     push @target, [$_, $node];
513     }
514     for (@{ref $target->[0]->{attributes} eq 'ARRAY'
515     ? $target->[0]->{attributes} : []}) {
516     push @target, [$_, null, $node];
517     }
518     if (defined $target->[1]) {
519     $target->[1]-><M::tc|Node.appendChild> ($node);
520     } else {
521     $r = $node unless defined $r;
522     }
523     }
524     } elsif (defined $target->[0]->{data}) {
525     # Text
526     if (defined $target->[1]) {
527     $target->[1]-><M::tc|Node.manakaiAppendText>
528     ($target->[0]->{data});
529     } elsif (not defined $r) {
530     $r = $od-><M::td|Document.createTextNode> ('');
531     $r-><M::tc|Node.manakaiAppendText> ($target->[0]->{data});
532     }
533     } elsif (defined $target->[0]->{xml_version}) {
534     # Document
535     my $node = $self-><M::c|DOMImplementation.createDocument>;
536     $node-><AS::td|Document.strictErrorChecking> (false);
537     $node-><AG::td|Document.domConfig>
538     -><M::c|DOMConfiguration.setParameter>
539     (<Q::cfg|strict-document-children> => false);
540     $node-><AS::td|Document.xmlVersion> ($target->[0]->{xml_version});
541     for (@{ref $target->[0]->{child_nodes} eq 'ARRAY'
542     ? $target->[0]->{child_nodes} : []}) {
543     push @target, [$_, $node];
544     }
545     unless (defined $r) {
546     $r = $node;
547     $od = $node;
548     $orig_strict = true;
549     }
550     } else {
551     # Document fragment
552     unless (defined $r) {
553     $r = $od-><M::td|Document.createDocumentFragment>;
554     for (@{ref $target->[0]->{child_nodes} eq 'ARRAY'
555     ? $target->[0]->{child_nodes} : []}) {
556     push @target, [$_, $r];
557     }
558     }
559     }
560     }
561     $od-><AS::td|Document.strictErrorChecking> ($orig_strict);
562     if ($r-><AG::tc|Node.nodeType> == <C::tc|Node.DOCUMENT_NODE>) {
563     $r-><AG::td|Document.domConfig>
564     -><M::c|DOMConfiguration.setParameter>
565     (<Q::cfg|strict-document-children> => null);
566     }
567     }__;
568    
569     @Test:
570     @@QName: TreeStore.1.test
571     @@enDesc:
572     A non-NS element.
573     @@PerlDef:
574     my $impl;
575     __CODE{tst|createImplForTest:: $impl => $impl}__;
576    
577     my $doc = $impl->create_document;
578    
579     my $e1 = $doc->create_element_ns (null, 'element');
580    
581     my $e2 = $impl->create_storable_object_from_node ($e1);
582    
583     my $e3 = $impl->create_node_from_storable_object ($e2);
584    
585     $test->assert_num_equals
586     (actual_value => $e3,
587     expected_value => $e1);
588     @Test:
589     @@QName: TreeStore.2.test
590     @@enDesc:
591     An NS element.
592     @@PerlDef:
593     my $impl;
594     __CODE{tst|createImplForTest:: $impl => $impl}__;
595    
596     my $doc = $impl->create_document;
597    
598     my $e1 = $doc->create_element_ns ('about:', 'a:element');
599    
600     my $e2 = $impl->create_storable_object_from_node ($e1);
601    
602     my $e3 = $impl->create_node_from_storable_object ($e2);
603    
604     $test->assert_num_equals
605     (actual_value => $e3,
606     expected_value => $e1);
607     @Test:
608     @@QName: TreeStore.3.test
609     @@enDesc:
610     A non-NS attribute.
611     @@PerlDef:
612     my $impl;
613     __CODE{tst|createImplForTest:: $impl => $impl}__;
614    
615     my $doc = $impl->create_document;
616    
617     my $e1 = $doc->create_attribute_ns (null, 'element');
618     $e1->value ('attr 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->assert_num_equals
625     (actual_value => $e3,
626     expected_value => $e1);
627     @Test:
628     @@QName: TreeStore.4.test
629     @@enDesc:
630     An NS attribute.
631     @@PerlDef:
632     my $impl;
633     __CODE{tst|createImplForTest:: $impl => $impl}__;
634    
635     my $doc = $impl->create_document;
636    
637     my $e1 = $doc->create_attribute_ns ('about:', 'a:element');
638     $e1->value ('attr value');
639    
640     my $e2 = $impl->create_storable_object_from_node ($e1);
641    
642     my $e3 = $impl->create_node_from_storable_object ($e2);
643    
644     $test->assert_num_equals
645     (actual_value => $e3,
646     expected_value => $e1);
647     @Test:
648     @@QName: TreeStore.5.test
649     @@enDesc:
650     A text.
651     @@PerlDef:
652     my $impl;
653     __CODE{tst|createImplForTest:: $impl => $impl}__;
654    
655     my $doc = $impl->create_document;
656    
657     my $e1 = $doc->create_text_node ('text value');
658    
659     my $e2 = $impl->create_storable_object_from_node ($e1);
660    
661     my $e3 = $impl->create_node_from_storable_object ($e2);
662    
663     $test->assert_num_equals
664     (actual_value => $e3,
665     expected_value => $e1);
666     @Test:
667     @@QName: TreeStore.6.test
668     @@enDesc:
669     A cdata section.
670     @@PerlDef:
671     my $impl;
672     __CODE{tst|createImplForTest:: $impl => $impl}__;
673    
674     my $doc = $impl->create_document;
675    
676     my $e1 = $doc->create_cdata_section ('text value');
677    
678     my $e2 = $impl->create_storable_object_from_node ($e1);
679    
680     my $e3 = $impl->create_node_from_storable_object ($e2);
681    
682     $test->id ('nodeType');
683     $test->assert_num_equals
684     (actual_value => $e3->node_type,
685     expected_value => <C::tc|Node.TEXT_NODE>);
686    
687     $test->id ('nodeValue');
688     $test->assert_equals
689     ($e3->node_value, $e1->node_value);
690     @Test:
691     @@QName: TreeStore.7.test
692     @@enDesc:
693     A document.
694     @@PerlDef:
695     my $impl;
696     __CODE{tst|createImplForTest:: $impl => $impl}__;
697    
698     my $doc = $impl->create_document;
699    
700     my $e1 = $doc;
701    
702     my $e2 = $impl->create_storable_object_from_node ($e1);
703    
704     my $e3 = $impl->create_node_from_storable_object ($e2);
705    
706     $test->assert_num_equals
707     (actual_value => $e3,
708     expected_value => $e1);
709     @Test:
710     @@QName: TreeStore.8.test
711     @@enDesc:
712     A document fragment.
713     @@PerlDef:
714     my $impl;
715     __CODE{tst|createImplForTest:: $impl => $impl}__;
716    
717     my $doc = $impl->create_document;
718    
719     my $e1 = $doc->create_document_fragment;
720    
721     my $e2 = $impl->create_storable_object_from_node ($e1);
722    
723     my $e3 = $impl->create_node_from_storable_object ($e2);
724    
725     $test->assert_num_equals
726     (actual_value => $e3,
727     expected_value => $e1);
728     @Test:
729     @@QName: TreeStore.9.test
730     @@enDesc:
731     A nesting element.
732     @@PerlDef:
733     my $impl;
734     __CODE{tst|createImplForTest:: $impl => $impl}__;
735    
736     my $doc = $impl->create_document;
737    
738     my $e1 = $doc->create_element_ns (null, 'el1');
739     $e1->append_child ($doc->create_element_ns (null, 'el2'));
740    
741     my $e2 = $impl->create_storable_object_from_node ($e1);
742    
743     my $e3 = $impl->create_node_from_storable_object ($e2);
744    
745     $test->assert_num_equals
746     (actual_value => $e3,
747     expected_value => $e1);
748     @Test:
749     @@QName: TreeStore.10.test
750     @@enDesc:
751     A nesting element with text.
752     @@PerlDef:
753     my $impl;
754     __CODE{tst|createImplForTest:: $impl => $impl}__;
755    
756     my $doc = $impl->create_document;
757    
758     my $e1 = $doc->create_element_ns (null, 'el1');
759     $e1->manakai_append_text ('text value');
760     $e1->append_child ($doc->create_element_ns (null, 'el2'));
761    
762     my $e2 = $impl->create_storable_object_from_node ($e1);
763    
764     my $e3 = $impl->create_node_from_storable_object ($e2);
765    
766     $test->assert_num_equals
767     (actual_value => $e3,
768     expected_value => $e1);
769     @Test:
770     @@QName: TreeStore.12.test
771     @@enDesc:
772     An element with attributes.
773     @@PerlDef:
774     my $impl;
775     __CODE{tst|createImplForTest:: $impl => $impl}__;
776    
777     my $doc = $impl->create_document;
778    
779     my $e1 = $doc->create_element_ns (null, 'el1');
780     $e1->set_attribute (a => 'b');
781     $e1->set_attribute_ns ('about:', 'b:c', 'd');
782    
783     my $e2 = $impl->create_storable_object_from_node ($e1);
784    
785     my $e3 = $impl->create_node_from_storable_object ($e2);
786    
787     $test->assert_num_equals
788     (actual_value => $e3,
789     expected_value => $e1);
790     @Test:
791     @@QName: TreeStore.13.test
792     @@enDesc:
793     A document with element.
794     @@PerlDef:
795     my $impl;
796     __CODE{tst|createImplForTest:: $impl => $impl}__;
797    
798     my $doc = $impl->create_document;
799    
800     my $e1 = $doc;
801     $doc->append_child ($doc->create_element_ns (null, 'el1'));
802    
803     my $e2 = $impl->create_storable_object_from_node ($e1);
804    
805     my $e3 = $impl->create_node_from_storable_object ($e2);
806    
807     $test->assert_num_equals
808     (actual_value => $e3,
809     expected_value => $e1);
810     @Test:
811     @@QName: TreeStore.14.test
812     @@enDesc:
813     A document fragment with element.
814     @@PerlDef:
815     my $impl;
816     __CODE{tst|createImplForTest:: $impl => $impl}__;
817    
818     my $doc = $impl->create_document;
819    
820     my $e1 = $doc->create_document_fragment;
821     $e1->append_child ($doc->create_element_ns (null, 'el1'));
822    
823     my $e2 = $impl->create_storable_object_from_node ($e1);
824    
825     my $e3 = $impl->create_node_from_storable_object ($e2);
826    
827     $test->assert_num_equals
828     (actual_value => $e3,
829     expected_value => $e1);
830     ##DOMImplementationTreeStore
831    
832     ResourceDef:
833     @QName: StorableObject
834     @AliasFor: DOMMain|DOMObject
835     @For: ManakaiDOM|DOM3
836    
837     ElementTypeBinding:
838     @Name: enDesc
839     @ElementType:
840     dis:Description
841     @ShadowContent:
842     @@lang:en
843    
844     ElementTypeBinding:
845     @Name: enImplNote
846     @ElementType:
847     dis:ImplNote
848     @ShadowContent:
849     @@lang:en
850    
851     ElementTypeBinding:
852     @Name: enFN
853     @ElementType:
854     dis:FullName
855     @ShadowContent:
856     @@lang:en
857    
858     ElementTypeBinding:
859     @Name: PerlDef
860     @ElementType:
861     dis:Def
862     @ShadowContent:
863     @@ContentType:
864     lang:Perl
865     @@ForCheck: ManakaiDOM|ForClass

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24