/[suikacvs]/messaging/manakai/lib/Message/Markup/SuikaWikiConfig21.pm
Suika

Contents of /messaging/manakai/lib/Message/Markup/SuikaWikiConfig21.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.33 - (show annotations) (download)
Sun Nov 5 09:16:30 2006 UTC (17 years, 6 months ago) by wakaba
Branch: MAIN
CVS Tags: manakai-200612
Changes since 1.32: +20 -20 lines
++ manakai/lib/Message/Util/ChangeLog	5 Nov 2006 09:15:59 -0000
2006-11-05  Wakaba  <wakaba@suika.fam.cx>

	* Grove.dis (mg:nodeRefClass, mg:nodeRefInterfaces): Removed.

++ manakai/lib/Message/DOM/ChangeLog	5 Nov 2006 09:15:04 -0000
	* CharacterData.dis (ManakaiDOMDocumentCharacterData): New
	class.  Factory methods |createTextNode| and |createComment|
	are moved from |ManakaiDOMDocument|.

	* DOMCore.dis: References to |ManakaiDOMObject|
	are removed.
	(tc:createImplForTest): Moved from |TreeCore.dis|.
	(DOMImplementation.___create_node_ref): Support
	for the |mg:nodeRefClass| option is removed.
	(ManakaiDOMConfiguration.___report_error): Moved
	from |ManakaiDOMObject| class.

	* DOMFeature.dis (domidl:extends): New property.
	(f:getFeatureImpl): Support for |+| classes is removed.

	* DOMMain.dis (DOMMain:docSupportsXMLFeature): Removed.
	(ManakaiDOM:ManakaiDOMObject): Removed.
	(DOMDataType): Removed.

	* Document.dis (ManakaiDOMImplementationDocument):
	The |createDocument| method is moved from
	the |ManakaiDOMImplementationTC| in |TreeCore.dis|.
	(ManakaiDOMDocument.___create_node_ref): Removed.
	(createElement, createElementNS, createAttribute,
	createAttributeNS, createTextNode, createComment,
	createCDATASection, createEntityReference,
	createProcessingInstruction): Class implementations
	are moved to each module.

	* Element.dis (ManakaiDOMImplementationElement): Factory
	methods are moved from |Document.dis|.
	(ManakaiDOMElement.___create_node_ref): Support
	for old class registry is removed.
	(ManakaiDOMAttr.___create_node_ref): Removed.
	(Attr.baseURI): Implementation
	for |xml:base| attribute is merged.
	(Attr.nodeValue, Attr.value): Implementation
	for |xml:id| attribute is merged.

	* TreeCore.dis (ManakaiDOMImplementationTC): Removed.

	* XDoctype.dis (ManakaiDOMImplementationXDoctype): The
	definition for |createDocumentType| method
	is moved from |TreeCore.dis|.

	* XML.dis (ManakaiDOMXMLDocument): Factory
	methods are moved from |Document.dis|.
	(ManakaiDOMXMLBaseAttr, ManakaiDOMXMLIdAttr): Removed (merged
	into |ManakaiDOMAttr| in |Element.dis|).

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

1 #!/usr/bin/perl
2 ## This file is automatically generated
3 ## at 2006-11-05T02:40:26+00:00,
4 ## from file "../Markup/SuikaWikiConfig21.dis",
5 ## module <http://suika.fam.cx/~wakaba/archive/2005/manakai/Markup#SuikaWikiConfig21>,
6 ## for <http://suika.fam.cx/~wakaba/archive/2005/swcfg21#ForLatest>.
7 ## Don't edit by hand!
8 use strict;
9 require Message::DOM::DOMCore;
10 require Message::Util::Error;
11 require Message::Util::Error::DOMException;
12 require Message::Util::ManakaiNode;
13 require Tie::Array;
14 package Message::Markup::SuikaWikiConfig21;
15 our $VERSION = 20061105.0240;
16 sub HIERARCHY_REQUEST_ERR ();
17 sub NAMESPACE_ERR ();
18 sub NOT_SUPPORTED_ERR ();
19 sub PARSE_ERR ();
20 sub TYPE_MISMATCH_ERR ();
21 sub WRONG_DOCUMENT_ERR ();
22 sub AUTOLOAD {
23
24
25 my $al = our $AUTOLOAD;
26 $al =~ s/.+:://;
27 if ({'HIERARCHY_REQUEST_ERR',
28 'Message::Markup::IF::SWCFGException::HIERARCHY_REQUEST_ERR',
29 'NAMESPACE_ERR',
30 'Message::Markup::IF::SWCFGException::NAMESPACE_ERR',
31 'NOT_SUPPORTED_ERR',
32 'Message::Markup::IF::SWCFGException::NOT_SUPPORTED_ERR',
33 'PARSE_ERR',
34 'Message::Markup::IF::SWCFGException::PARSE_ERR',
35 'TYPE_MISMATCH_ERR',
36 'Message::Markup::IF::SWCFGException::TYPE_MISMATCH_ERR',
37 'WRONG_DOCUMENT_ERR',
38 'Message::Markup::IF::SWCFGException::WRONG_DOCUMENT_ERR'}->{$al}) {
39 no strict 'refs';
40 *{$AUTOLOAD} = \&{{'HIERARCHY_REQUEST_ERR',
41 'Message::Markup::IF::SWCFGException::HIERARCHY_REQUEST_ERR',
42 'NAMESPACE_ERR',
43 'Message::Markup::IF::SWCFGException::NAMESPACE_ERR',
44 'NOT_SUPPORTED_ERR',
45 'Message::Markup::IF::SWCFGException::NOT_SUPPORTED_ERR',
46 'PARSE_ERR',
47 'Message::Markup::IF::SWCFGException::PARSE_ERR',
48 'TYPE_MISMATCH_ERR',
49 'Message::Markup::IF::SWCFGException::TYPE_MISMATCH_ERR',
50 'WRONG_DOCUMENT_ERR',
51 'Message::Markup::IF::SWCFGException::WRONG_DOCUMENT_ERR'}->{$al}};
52 goto &{$AUTOLOAD};
53 } else {
54 require Carp;
55 Carp::croak (qq<Can't locate method "$AUTOLOAD">);
56 }
57
58 }
59 sub import {
60
61
62 my $self = shift;
63 if (@_) {
64 local $Exporter::ExportLevel = $Exporter::ExportLevel + 1;
65 $self->SUPER::import (@_);
66 for (grep {not /\W/} @_) {
67 eval qq{$_};
68 }
69 }
70
71 }
72 our %EXPORT_TAG = ('SWCFGExceptionCode',
73 ['HIERARCHY_REQUEST_ERR',
74 'NAMESPACE_ERR',
75 'NOT_SUPPORTED_ERR',
76 'PARSE_ERR',
77 'TYPE_MISMATCH_ERR',
78 'WRONG_DOCUMENT_ERR']);
79 our @EXPORT_OK = ('HIERARCHY_REQUEST_ERR',
80 'NAMESPACE_ERR',
81 'NOT_SUPPORTED_ERR',
82 'PARSE_ERR',
83 'TYPE_MISMATCH_ERR',
84 'WRONG_DOCUMENT_ERR');
85 use Exporter; push our @ISA, 'Exporter';
86 package Message::Markup::IF::SWCFGNode;
87 our $VERSION = 20061105.0240;
88 package Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode;
89 our $VERSION = 20061105.0240;
90 push our @ISA, 'Message::Util::ManakaiNode::ManakaiNodeRef',
91 'Message::Util::Error::DOMException::ManakaiDefaultExceptionHandler',
92 'Message::Markup::IF::SWCFGNode';
93 sub append_node ($$%) {
94 my ($self, $node, %opt) = @_;
95 my $r;
96
97 {
98
99 unless
100 (UNIVERSAL::isa ($node,
101 'Message::Markup::IF::SWCFGNode'
102 ) or
103 UNIVERSAL::isa ($node,
104 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode'
105 )) {
106 ## NOTE: dis.pl and cdis2pm.pl does not support
107 ## interface "implement"ing in this case
108 if ($opt{node_or_text}) {
109
110
111 {
112
113 local $Error::Depth = $Error::Depth + 1;
114
115 {
116
117
118
119 $r = $self->
120 append_text
121 ($node);
122
123
124
125 }
126
127
128 ;}
129
130 ;
131 } else {
132
133 report Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException -object => $self, '-type' => 'TYPE_MISMATCH_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'append_node', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#NOT_NODE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#actualType' => ref $node;
134
135 ;
136 }
137 } else {
138 my $this_node_type = $self->
139 node_type
140 ;
141 my $that_node_type = $node->
142 node_type
143 ;
144 if ($this_node_type eq '#comment') {
145
146 report Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException -object => $self, '-type' => 'HIERARCHY_REQUEST_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'append_node', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#HIERARCHY_BAD_TYPE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'node', 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#parentNodeType' => $this_node_type, 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#childNodeType' => $that_node_type;
147
148 ;
149 } elsif ($this_node_type ne '#document') {
150 if ($that_node_type eq '#comment') {
151
152 report Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException -object => $self, '-type' => 'HIERARCHY_REQUEST_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'append_node', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#HIERARCHY_BAD_TYPE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'node', 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#parentNodeType' => $this_node_type, 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#childNodeType' => $that_node_type;
153
154 ;
155 }
156 } else {
157 if ($that_node_type eq '#document' or
158 $that_node_type eq '#fragment') {
159
160 report Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException -object => $self, '-type' => 'HIERARCHY_REQUEST_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'append_node', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#HIERARCHY_BAD_TYPE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'node', 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#parentNodeType' => $this_node_type, 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#childNodeType' => $that_node_type;
161
162 ;
163 }
164 }
165 unless (($self->
166 owner_document
167 || $self) eq
168 $node->
169 owner_document
170 ) {
171
172 report Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException -object => $self, '-type' => 'WRONG_DOCUMENT_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'append_node', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#EXTERNAL_NODE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'node';
173
174 ;
175 }
176 my $this_node = $node;
177 ANCESTOR: {
178 if ($this_node eq $self) {
179
180 report Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException -object => $self, '-type' => 'HIERARCHY_REQUEST_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'append_node', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#HIERARCHY_ANCESTOR_OR_SELF_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'node';
181
182 ;
183 }
184 redo ANCESTOR if $this_node = $this_node->
185 parent_node
186 ;
187 }
188
189 if ($node->
190 node_type eq
191 '#fragment') {
192 $self->{
193 'node'
194 }
195 ->
196 _import_tree
197 ($node->{
198 'node'
199 });
200 for my $cn (@{$node->{
201 'node'
202 }->{
203 'swcn'
204 }}) {
205 $cn->{
206 'p'
207 } = $self->{
208 'node'
209 };
210 }
211 push @{$self->{
212 'node'
213 }->{
214 'swcn'
215 }},
216 @{$node->{
217 'node'
218 }->{
219 'swcn'
220 }};
221 $node->{
222 'node'
223 }->{
224 'swcn'
225 } = [];
226 $node->{
227 'node'
228 }->
229 _orphanate
230 ;
231 $r = $self;
232 } else {
233 if ($node->{
234 'node'
235 }->{
236 'p'
237 }) {
238 my @pl = $node->{
239 'node'
240 }->{
241 'p'
242 }
243 ->{
244 'swcn'
245 };
246 for my $i (0..$#pl) {
247 if ($pl[$i] eq $node->{
248 'node'
249 }) {
250 splice @pl, $i, 1, ();
251 last;
252 }
253 }
254 }
255 $self->{
256 'node'
257 }->
258 _import_tree
259 ($node->{
260 'node'
261 });
262 push @{$self->{
263 'node'
264 }->{
265 'swcn'
266 }},
267 $node->{
268 'node'
269 };
270 $node->{
271 'node'
272 }->{
273 'p'
274 }
275 = $self->{
276 'node'
277 };
278 $r = $node;
279 }
280 }
281
282
283 }
284 $r}
285 sub append_new_node ($%) {
286 my ($self, %opt) = @_;
287 my $r;
288
289 {
290
291 my
292 $this_type = $self->
293 node_type
294 ;
295 if ($this_type eq '#comment') {
296
297 report Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException -object => $self, '-type' => 'HIERARCHY_REQUEST_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'append_new_node', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#HIERARCHY_BAD_TYPE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'type', 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#parentNodeType' => $this_type, 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#childNodeType' => $opt{type};
298
299 ;
300 }
301 if ($opt{type} eq '#element') {
302
303
304 {
305
306 local $Error::Depth = $Error::Depth + 1;
307
308 {
309
310
311
312 $r = ($self->
313 owner_document
314 || $self)
315 ->
316 create_element_ns
317
318 ($opt{namespace_uri}, $opt{local_name});
319
320
321
322 }
323
324
325 ;}
326
327 ;
328 $r->{
329 'node'
330 }->{
331 'swval'
332 } = $opt{value}
333 if defined $opt{value};
334 } elsif ($opt{type} eq '#comment') {
335 if ($this_type ne '#document') {
336
337 report Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException -object => $self, '-type' => 'HIERARCHY_REQUEST_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'append_new_node', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#HIERARCHY_BAD_TYPE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'type', 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#parentNodeType' => $this_type, 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#childNodeType' => $opt{type};
338
339 ;
340 }
341
342
343 {
344
345 local $Error::Depth = $Error::Depth + 1;
346
347 {
348
349
350
351 $r = ($self->
352 owner_document
353 || $self)
354 ->
355 create_comment
356 ($opt{value});
357
358
359
360 }
361
362
363 ;}
364
365 ;
366 } else {
367
368 report Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException -object => $self, '-type' => 'HIERARCHY_REQUEST_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'append_new_node', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#HIERARCHY_BAD_TYPE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'type', 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#parentNodeType' => $this_type, 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#childNodeType' => $opt{type};
369
370 ;
371 }
372 $self->{
373 'node'
374 }->
375 _import_tree
376 ($r->{
377 'node'
378 });
379 push @{$self->{
380 'node'
381 }->{
382 'swcn'
383 }},
384 $r->{
385 'node'
386 };
387 $r->{
388 'node'
389 }->{
390 'p'
391 } = $self->{
392 'node'
393 };
394
395
396 }
397 $r}
398 sub append_text ($$) {
399 my ($self, $text) = @_;
400
401 {
402
403 my
404 $node = $self->{
405 'node'
406 };
407 my $nt = $self->
408 node_type
409 ;
410 if ($nt eq '#document') {
411
412 report Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException -object => $self, '-type' => 'HIERARCHY_REQUEST_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'append_text', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#HIERARCHY_NO_VALUE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'text', 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#parentNodeType' => $nt;
413
414 ;
415 } elsif (ref ($node->{
416 'swval'
417 }) eq 'ARRAY') {
418 push @{$node->{
419 'swval'
420 }}, $text;
421 } elsif (defined $node->{
422 'swval'
423 }) {
424 $node->{
425 'swval'
426 } .= $text;
427 } else {
428
429
430 {
431
432 unless
433 ($node->{
434 'etx'
435 }) {
436
437
438 {
439
440 local $Error::Depth = $Error::Depth + 1;
441
442 {
443
444
445 my
446 $__qn;
447 if ($node->{
448 'nsx'
449 }) {
450 $__qn = $self->
451 _get_node_reference
452 ($node)
453 ->
454 real_qualified_name
455 ;
456 } else {
457 $__qn = $node->{
458 'swln'
459 };
460
461 }
462 my $__od = $node->{
463 'swod'
464 };
465 if ($__od->{
466 'swetb'
467 }->{$__qn}) {
468 my $b = $__od->{
469 'swetb'
470 }->{$__qn};
471 $node->{
472 'swns'
473 } =
474 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
475 ;
476 if ($node->{
477 'nsx'
478 }) {
479 $node->{
480 'swln'
481 } = $__qn;
482 } else {
483 $node->{
484 'nsx'
485 } =
486 1
487 ;
488 }
489 unless ($b->{namespaceExpanded}) {
490 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
491 my $__prefix = $1;
492 $b->{shadowNamespaceURI}
493 = $self->
494 _get_node_reference
495 ($__od)
496 ->
497 lookup_namespace_uri
498
499 ($__prefix, make_new_binding =>
500 0
501 ,
502 raise_prefix_exception =>
503 1
504 );
505 }
506 $b->{namespaceExpanded} =
507 1
508 ;
509 }
510 $node->{
511 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
512 } = $b->{shadowNamespaceURI};
513 $node->{
514 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
515 } = $b->{shadowLocalName};
516 for my $__p (qw/shadowContent shadowSibling/) {
517 next unless $b->{$__p};
518 my $cl = $self->
519 _get_node_reference
520 ($b->{$__p})
521 ->clone;
522 my $__n = $node->{{shadowContent =>
523 'shadow'
524 ,
525 shadowSibling =>
526 'shadowsib'
527 }->{$__p}}
528 = $cl->{
529 'node'
530 };
531 $node->
532 _import_tree
533 ($__n);
534 $__n->{{shadowContent =>
535 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
536 ,
537 shadowSibling =>
538 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
539 }->{$__p}} = $node;
540 }
541 }
542 $node->{
543 'etx'
544 } =
545 1
546 ;
547
548
549
550 }
551
552
553 ;}
554
555 ;
556 }
557
558
559 }
560
561 ;
562 if (defined $node->{
563 'shadow'
564 } and
565 defined $node->{
566 'shadow'
567 }->{
568 'swval'
569 }) {
570 $node->{
571 'swval'
572 }
573 = $node->{
574 'shadow'
575 }->{
576 'swval'
577 } . $text;
578 } else {
579 $node->{
580 'swval'
581 } = $text;
582 }
583 }
584
585
586 }
587 }
588 sub remove_child_node ($$) {
589 my ($self, $node) = @_;
590
591 {
592
593 my
594 $n = $node->{
595 'node'
596 };
597 $self->{
598 'node'
599 }->{
600 'swcn'
601 }
602 = [grep {not $_ eq $n} @{$self->{
603 'node'
604 }
605 ->{
606 'swcn'
607 }}];
608 $node->{
609 'node'
610 }->
611 _orphanate
612 ;
613
614
615 }
616 }
617 sub get_attribute ($$%) {
618 my ($self, $localName, %opt) = @_;
619 my $r;
620
621 {
622
623
624 {
625
626 local $Error::Depth = $Error::Depth + 1;
627
628 {
629
630
631 FIND:
632 {
633 my $node = $self->{
634 'node'
635 };
636
637
638 {
639
640 unless
641 ($node->{
642 'etx'
643 }) {
644
645
646 {
647
648 local $Error::Depth = $Error::Depth + 1;
649
650 {
651
652
653 my
654 $__qn;
655 if ($node->{
656 'nsx'
657 }) {
658 $__qn = $self->
659 _get_node_reference
660 ($node)
661 ->
662 real_qualified_name
663 ;
664 } else {
665 $__qn = $node->{
666 'swln'
667 };
668
669 }
670 my $__od = $node->{
671 'swod'
672 };
673 if ($__od->{
674 'swetb'
675 }->{$__qn}) {
676 my $b = $__od->{
677 'swetb'
678 }->{$__qn};
679 $node->{
680 'swns'
681 } =
682 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
683 ;
684 if ($node->{
685 'nsx'
686 }) {
687 $node->{
688 'swln'
689 } = $__qn;
690 } else {
691 $node->{
692 'nsx'
693 } =
694 1
695 ;
696 }
697 unless ($b->{namespaceExpanded}) {
698 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
699 my $__prefix = $1;
700 $b->{shadowNamespaceURI}
701 = $self->
702 _get_node_reference
703 ($__od)
704 ->
705 lookup_namespace_uri
706
707 ($__prefix, make_new_binding =>
708 0
709 ,
710 raise_prefix_exception =>
711 1
712 );
713 }
714 $b->{namespaceExpanded} =
715 1
716 ;
717 }
718 $node->{
719 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
720 } = $b->{shadowNamespaceURI};
721 $node->{
722 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
723 } = $b->{shadowLocalName};
724 for my $__p (qw/shadowContent shadowSibling/) {
725 next unless $b->{$__p};
726 my $cl = $self->
727 _get_node_reference
728 ($b->{$__p})
729 ->clone;
730 my $__n = $node->{{shadowContent =>
731 'shadow'
732 ,
733 shadowSibling =>
734 'shadowsib'
735 }->{$__p}}
736 = $cl->{
737 'node'
738 };
739 $node->
740 _import_tree
741 ($__n);
742 $__n->{{shadowContent =>
743 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
744 ,
745 shadowSibling =>
746 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
747 }->{$__p}} = $node;
748 }
749 }
750 $node->{
751 'etx'
752 } =
753 1
754 ;
755
756
757
758 }
759
760
761 ;}
762
763 ;
764 }
765
766
767 }
768
769 ;
770 my @c = (@{$node->{
771 'swcn'
772 }},
773 ($node->{
774 'shadow'
775 }
776 ? @{$node->{
777 'shadow'
778 }
779 ->{
780 'swcn'
781 }} : ()));
782 while (@c) {
783 my $c = $self->
784 _get_node_reference
785
786 (my $cn = shift @c);
787 if ($c->
788 node_type eq
789 '#element' and
790 $c->
791 local_name eq
792 $localName) {
793 $r = $c;
794 last FIND;
795 }
796
797
798 {
799
800 unless
801 ($cn->{
802 'etx'
803 }) {
804
805
806 {
807
808 local $Error::Depth = $Error::Depth + 1;
809
810 {
811
812
813 my
814 $__qn;
815 if ($cn->{
816 'nsx'
817 }) {
818 $__qn = $self->
819 _get_node_reference
820 ($cn)
821 ->
822 real_qualified_name
823 ;
824 } else {
825 $__qn = $cn->{
826 'swln'
827 };
828
829 }
830 my $__od = $cn->{
831 'swod'
832 };
833 if ($__od->{
834 'swetb'
835 }->{$__qn}) {
836 my $b = $__od->{
837 'swetb'
838 }->{$__qn};
839 $cn->{
840 'swns'
841 } =
842 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
843 ;
844 if ($cn->{
845 'nsx'
846 }) {
847 $cn->{
848 'swln'
849 } = $__qn;
850 } else {
851 $cn->{
852 'nsx'
853 } =
854 1
855 ;
856 }
857 unless ($b->{namespaceExpanded}) {
858 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
859 my $__prefix = $1;
860 $b->{shadowNamespaceURI}
861 = $self->
862 _get_node_reference
863 ($__od)
864 ->
865 lookup_namespace_uri
866
867 ($__prefix, make_new_binding =>
868 0
869 ,
870 raise_prefix_exception =>
871 1
872 );
873 }
874 $b->{namespaceExpanded} =
875 1
876 ;
877 }
878 $cn->{
879 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
880 } = $b->{shadowNamespaceURI};
881 $cn->{
882 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
883 } = $b->{shadowLocalName};
884 for my $__p (qw/shadowContent shadowSibling/) {
885 next unless $b->{$__p};
886 my $cl = $self->
887 _get_node_reference
888 ($b->{$__p})
889 ->clone;
890 my $__n = $cn->{{shadowContent =>
891 'shadow'
892 ,
893 shadowSibling =>
894 'shadowsib'
895 }->{$__p}}
896 = $cl->{
897 'node'
898 };
899 $cn->
900 _import_tree
901 ($__n);
902 $__n->{{shadowContent =>
903 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
904 ,
905 shadowSibling =>
906 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
907 }->{$__p}} = $cn;
908 }
909 }
910 $cn->{
911 'etx'
912 } =
913 1
914 ;
915
916
917
918 }
919
920
921 ;}
922
923 ;
924 }
925
926
927 }
928
929 ;
930 if ($cn->{
931 'shadowsib'
932 }) {
933 push @c, @{$cn->{
934 'shadowsib'
935 }->{
936 'swcn'
937 }};
938 }
939 }
940 ## Not found
941 if ($opt{make_new_node}) {
942 $r = ($self->
943 owner_document
944 || $self)
945 ->
946 create_element_ns
947 (
948 undef
949 , $localName);
950 $self->
951 append_node
952 ($r);
953 }
954 } # FIND
955
956
957
958 }
959
960
961 ;}
962
963 ;
964
965
966 }
967 $r}
968 sub get_attribute_ns ($$$%) {
969 my ($self, $namespaceURI, $localName, %opt) = @_;
970 my $r;
971
972 {
973
974 FIND:
975 {
976 my $node = $self->{
977 'node'
978 };
979
980
981 {
982
983 unless
984 ($node->{
985 'etx'
986 }) {
987
988
989 {
990
991 local $Error::Depth = $Error::Depth + 1;
992
993 {
994
995
996 my
997 $__qn;
998 if ($node->{
999 'nsx'
1000 }) {
1001 $__qn = $self->
1002 _get_node_reference
1003 ($node)
1004 ->
1005 real_qualified_name
1006 ;
1007 } else {
1008 $__qn = $node->{
1009 'swln'
1010 };
1011
1012 }
1013 my $__od = $node->{
1014 'swod'
1015 };
1016 if ($__od->{
1017 'swetb'
1018 }->{$__qn}) {
1019 my $b = $__od->{
1020 'swetb'
1021 }->{$__qn};
1022 $node->{
1023 'swns'
1024 } =
1025 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
1026 ;
1027 if ($node->{
1028 'nsx'
1029 }) {
1030 $node->{
1031 'swln'
1032 } = $__qn;
1033 } else {
1034 $node->{
1035 'nsx'
1036 } =
1037 1
1038 ;
1039 }
1040 unless ($b->{namespaceExpanded}) {
1041 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
1042 my $__prefix = $1;
1043 $b->{shadowNamespaceURI}
1044 = $self->
1045 _get_node_reference
1046 ($__od)
1047 ->
1048 lookup_namespace_uri
1049
1050 ($__prefix, make_new_binding =>
1051 0
1052 ,
1053 raise_prefix_exception =>
1054 1
1055 );
1056 }
1057 $b->{namespaceExpanded} =
1058 1
1059 ;
1060 }
1061 $node->{
1062 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
1063 } = $b->{shadowNamespaceURI};
1064 $node->{
1065 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
1066 } = $b->{shadowLocalName};
1067 for my $__p (qw/shadowContent shadowSibling/) {
1068 next unless $b->{$__p};
1069 my $cl = $self->
1070 _get_node_reference
1071 ($b->{$__p})
1072 ->clone;
1073 my $__n = $node->{{shadowContent =>
1074 'shadow'
1075 ,
1076 shadowSibling =>
1077 'shadowsib'
1078 }->{$__p}}
1079 = $cl->{
1080 'node'
1081 };
1082 $node->
1083 _import_tree
1084 ($__n);
1085 $__n->{{shadowContent =>
1086 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
1087 ,
1088 shadowSibling =>
1089 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
1090 }->{$__p}} = $node;
1091 }
1092 }
1093 $node->{
1094 'etx'
1095 } =
1096 1
1097 ;
1098
1099
1100
1101 }
1102
1103
1104 ;}
1105
1106 ;
1107 }
1108
1109
1110 }
1111
1112 ;
1113 my @c = (@{$node->{
1114 'swcn'
1115 }},
1116 ($node->{
1117 'shadow'
1118 }
1119 ? @{$node->{
1120 'shadow'
1121 }
1122 ->{
1123 'swcn'
1124 }} : ()));
1125 while (@c) {
1126 my $c = $self->
1127 _get_node_reference
1128
1129 (my $cn = shift @c);
1130 if ($c->
1131 node_type eq
1132 '#element' and
1133 ((not defined $namespaceURI and
1134 not defined $c->
1135 namespace_uri
1136 ) or
1137 (defined $namespaceURI and
1138 defined $c->
1139 namespace_uri and
1140
1141 $namespaceURI eq $c->
1142 namespace_uri
1143 )) and
1144 $c->
1145 local_name eq
1146 $localName) {
1147 $r = $c;
1148 last FIND;
1149 }
1150
1151
1152 {
1153
1154 unless
1155 ($cn->{
1156 'etx'
1157 }) {
1158
1159
1160 {
1161
1162 local $Error::Depth = $Error::Depth + 1;
1163
1164 {
1165
1166
1167 my
1168 $__qn;
1169 if ($cn->{
1170 'nsx'
1171 }) {
1172 $__qn = $self->
1173 _get_node_reference
1174 ($cn)
1175 ->
1176 real_qualified_name
1177 ;
1178 } else {
1179 $__qn = $cn->{
1180 'swln'
1181 };
1182
1183 }
1184 my $__od = $cn->{
1185 'swod'
1186 };
1187 if ($__od->{
1188 'swetb'
1189 }->{$__qn}) {
1190 my $b = $__od->{
1191 'swetb'
1192 }->{$__qn};
1193 $cn->{
1194 'swns'
1195 } =
1196 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
1197 ;
1198 if ($cn->{
1199 'nsx'
1200 }) {
1201 $cn->{
1202 'swln'
1203 } = $__qn;
1204 } else {
1205 $cn->{
1206 'nsx'
1207 } =
1208 1
1209 ;
1210 }
1211 unless ($b->{namespaceExpanded}) {
1212 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
1213 my $__prefix = $1;
1214 $b->{shadowNamespaceURI}
1215 = $self->
1216 _get_node_reference
1217 ($__od)
1218 ->
1219 lookup_namespace_uri
1220
1221 ($__prefix, make_new_binding =>
1222 0
1223 ,
1224 raise_prefix_exception =>
1225 1
1226 );
1227 }
1228 $b->{namespaceExpanded} =
1229 1
1230 ;
1231 }
1232 $cn->{
1233 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
1234 } = $b->{shadowNamespaceURI};
1235 $cn->{
1236 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
1237 } = $b->{shadowLocalName};
1238 for my $__p (qw/shadowContent shadowSibling/) {
1239 next unless $b->{$__p};
1240 my $cl = $self->
1241 _get_node_reference
1242 ($b->{$__p})
1243 ->clone;
1244 my $__n = $cn->{{shadowContent =>
1245 'shadow'
1246 ,
1247 shadowSibling =>
1248 'shadowsib'
1249 }->{$__p}}
1250 = $cl->{
1251 'node'
1252 };
1253 $cn->
1254 _import_tree
1255 ($__n);
1256 $__n->{{shadowContent =>
1257 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
1258 ,
1259 shadowSibling =>
1260 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
1261 }->{$__p}} = $cn;
1262 }
1263 }
1264 $cn->{
1265 'etx'
1266 } =
1267 1
1268 ;
1269
1270
1271
1272 }
1273
1274
1275 ;}
1276
1277 ;
1278 }
1279
1280
1281 }
1282
1283 ;
1284 if ($cn->{
1285 'shadowsib'
1286 }) {
1287 push @c, @{$cn->{
1288 'shadowsib'
1289 }->{
1290 'swcn'
1291 }};
1292 }
1293 }
1294 ## Not found
1295 if ($opt{make_new_node}) {
1296
1297
1298 {
1299
1300 local $Error::Depth = $Error::Depth + 1;
1301
1302 {
1303
1304
1305
1306 $r = ($self->
1307 owner_document
1308 || $self)
1309 ->
1310 create_element_ns
1311
1312 ($namespaceURI, $localName);
1313 $self->
1314 append_node
1315 ($r);
1316
1317
1318
1319 }
1320
1321
1322 ;}
1323
1324 ;
1325 }
1326 } # FIND
1327
1328
1329 }
1330 $r}
1331 sub get_attribute_value ($$%) {
1332 my ($self, $localName, %opt) = @_;
1333 my $r = '';
1334
1335 {
1336
1337
1338 {
1339
1340 local $Error::Depth = $Error::Depth + 1;
1341
1342 {
1343
1344
1345 my
1346 $node = $self->
1347 get_attribute
1348 ($localName);
1349 if (ref $node) {
1350 $r = $node->
1351 value
1352 (%opt);
1353 if ($opt{default_list} and ref $r eq 'ARRAY' and @$r == 0) {
1354 $r = $opt{default_list};
1355 }
1356 } else {
1357 $r = $opt{default_list} || $opt{default};
1358 }
1359
1360
1361
1362 }
1363
1364
1365 ;}
1366
1367 ;
1368
1369
1370 }
1371 $r}
1372 sub get_attribute_value_ns ($$$%) {
1373 my ($self, $namespaceURI, $localName, %opt) = @_;
1374 my $r = '';
1375
1376 {
1377
1378
1379 {
1380
1381 local $Error::Depth = $Error::Depth + 1;
1382
1383 {
1384
1385
1386 my
1387 $node = $self->
1388 get_attribute_ns
1389
1390 ($namespaceURI, $localName);
1391 if (ref $node) {
1392 $r = $node->
1393 value
1394 (%opt);
1395 if ($opt{default_list} and ref $r eq 'ARRAY' and @$r == 0) {
1396 $r = $opt{default_list};
1397 }
1398 } else {
1399 $r = $opt{default_list} || $opt{default};
1400 }
1401
1402
1403
1404 }
1405
1406
1407 ;}
1408
1409 ;
1410
1411
1412 }
1413 $r}
1414 sub get_element_by ($$;%) {
1415 my ($self, $code, %opt) = @_;
1416 my $r;
1417
1418 {
1419
1420 FIND:
1421 {
1422 my $node = $self->{
1423 'node'
1424 };
1425
1426
1427 {
1428
1429 unless
1430 ($node->{
1431 'etx'
1432 }) {
1433
1434
1435 {
1436
1437 local $Error::Depth = $Error::Depth + 1;
1438
1439 {
1440
1441
1442 my
1443 $__qn;
1444 if ($node->{
1445 'nsx'
1446 }) {
1447 $__qn = $self->
1448 _get_node_reference
1449 ($node)
1450 ->
1451 real_qualified_name
1452 ;
1453 } else {
1454 $__qn = $node->{
1455 'swln'
1456 };
1457
1458 }
1459 my $__od = $node->{
1460 'swod'
1461 };
1462 if ($__od->{
1463 'swetb'
1464 }->{$__qn}) {
1465 my $b = $__od->{
1466 'swetb'
1467 }->{$__qn};
1468 $node->{
1469 'swns'
1470 } =
1471 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
1472 ;
1473 if ($node->{
1474 'nsx'
1475 }) {
1476 $node->{
1477 'swln'
1478 } = $__qn;
1479 } else {
1480 $node->{
1481 'nsx'
1482 } =
1483 1
1484 ;
1485 }
1486 unless ($b->{namespaceExpanded}) {
1487 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
1488 my $__prefix = $1;
1489 $b->{shadowNamespaceURI}
1490 = $self->
1491 _get_node_reference
1492 ($__od)
1493 ->
1494 lookup_namespace_uri
1495
1496 ($__prefix, make_new_binding =>
1497 0
1498 ,
1499 raise_prefix_exception =>
1500 1
1501 );
1502 }
1503 $b->{namespaceExpanded} =
1504 1
1505 ;
1506 }
1507 $node->{
1508 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
1509 } = $b->{shadowNamespaceURI};
1510 $node->{
1511 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
1512 } = $b->{shadowLocalName};
1513 for my $__p (qw/shadowContent shadowSibling/) {
1514 next unless $b->{$__p};
1515 my $cl = $self->
1516 _get_node_reference
1517 ($b->{$__p})
1518 ->clone;
1519 my $__n = $node->{{shadowContent =>
1520 'shadow'
1521 ,
1522 shadowSibling =>
1523 'shadowsib'
1524 }->{$__p}}
1525 = $cl->{
1526 'node'
1527 };
1528 $node->
1529 _import_tree
1530 ($__n);
1531 $__n->{{shadowContent =>
1532 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
1533 ,
1534 shadowSibling =>
1535 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
1536 }->{$__p}} = $node;
1537 }
1538 }
1539 $node->{
1540 'etx'
1541 } =
1542 1
1543 ;
1544
1545
1546
1547 }
1548
1549
1550 ;}
1551
1552 ;
1553 }
1554
1555
1556 }
1557
1558 ;
1559
1560
1561 {
1562
1563 local $Error::Depth = $Error::Depth + 1;
1564
1565 {
1566
1567
1568 my
1569 @c = (@{$node->{
1570 'swcn'
1571 }},
1572 ($node->{
1573 'shadow'
1574 }
1575 ? @{$node->{
1576 'shadow'
1577 }
1578 ->{
1579 'swcn'
1580 }} : ()));
1581 while (@c) {
1582 my $this = $self->
1583 _get_node_reference
1584
1585 (my $t = shift @c);
1586 if ($t->{
1587 'swnt'
1588 } eq '#element' and
1589 $code->($self, $this, %opt)) {
1590 $r = $this;
1591 last FIND;
1592 }
1593
1594
1595 {
1596
1597 unless
1598 ($t->{
1599 'etx'
1600 }) {
1601
1602
1603 {
1604
1605 local $Error::Depth = $Error::Depth + 1;
1606
1607 {
1608
1609
1610 my
1611 $__qn;
1612 if ($t->{
1613 'nsx'
1614 }) {
1615 $__qn = $self->
1616 _get_node_reference
1617 ($t)
1618 ->
1619 real_qualified_name
1620 ;
1621 } else {
1622 $__qn = $t->{
1623 'swln'
1624 };
1625
1626 }
1627 my $__od = $t->{
1628 'swod'
1629 };
1630 if ($__od->{
1631 'swetb'
1632 }->{$__qn}) {
1633 my $b = $__od->{
1634 'swetb'
1635 }->{$__qn};
1636 $t->{
1637 'swns'
1638 } =
1639 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
1640 ;
1641 if ($t->{
1642 'nsx'
1643 }) {
1644 $t->{
1645 'swln'
1646 } = $__qn;
1647 } else {
1648 $t->{
1649 'nsx'
1650 } =
1651 1
1652 ;
1653 }
1654 unless ($b->{namespaceExpanded}) {
1655 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
1656 my $__prefix = $1;
1657 $b->{shadowNamespaceURI}
1658 = $self->
1659 _get_node_reference
1660 ($__od)
1661 ->
1662 lookup_namespace_uri
1663
1664 ($__prefix, make_new_binding =>
1665 0
1666 ,
1667 raise_prefix_exception =>
1668 1
1669 );
1670 }
1671 $b->{namespaceExpanded} =
1672 1
1673 ;
1674 }
1675 $t->{
1676 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
1677 } = $b->{shadowNamespaceURI};
1678 $t->{
1679 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
1680 } = $b->{shadowLocalName};
1681 for my $__p (qw/shadowContent shadowSibling/) {
1682 next unless $b->{$__p};
1683 my $cl = $self->
1684 _get_node_reference
1685 ($b->{$__p})
1686 ->clone;
1687 my $__n = $t->{{shadowContent =>
1688 'shadow'
1689 ,
1690 shadowSibling =>
1691 'shadowsib'
1692 }->{$__p}}
1693 = $cl->{
1694 'node'
1695 };
1696 $t->
1697 _import_tree
1698 ($__n);
1699 $__n->{{shadowContent =>
1700 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
1701 ,
1702 shadowSibling =>
1703 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
1704 }->{$__p}} = $t;
1705 }
1706 }
1707 $t->{
1708 'etx'
1709 } =
1710 1
1711 ;
1712
1713
1714
1715 }
1716
1717
1718 ;}
1719
1720 ;
1721 }
1722
1723
1724 }
1725
1726 ;
1727 if ($t->{
1728 'shadowsib'
1729 }) {
1730 push @c, @{$t->{
1731 'shadowsib'
1732 }->{
1733 'swcn'
1734 }};
1735 }
1736 }
1737
1738
1739
1740 }
1741
1742
1743 ;}
1744
1745 ;
1746 ## Not found
1747 if ($opt{make_new_node}) {
1748
1749
1750 {
1751
1752 local $Error::Depth = $Error::Depth + 1;
1753
1754 {
1755
1756
1757
1758 $r = $self->
1759 append_new_node
1760
1761 (type => '#element',
1762 namespace_uri =>
1763 ($self->
1764 owner_document
1765 ||
1766 $self)
1767 ->
1768 default_element_type_namespace_uri
1769 ,
1770 local_name => 'Node');
1771 if (ref $opt{make_new_node} eq 'CODE') {
1772 $opt{make_new_node}->($self, $r, %opt);
1773 }
1774
1775
1776
1777 }
1778
1779
1780 ;}
1781
1782 ;
1783 }
1784 } # FIND
1785
1786
1787 }
1788 $r}
1789 sub set_attribute ($$$) {
1790 my ($self, $localName, $value) = @_;
1791 my $r;
1792
1793 {
1794
1795 if
1796 ({qw/HASH 1 CODE 1/}->{ref ($value)}) {
1797
1798 report Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException -object => $self, '-type' => 'TYPE_MISMATCH_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'set_attribute', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#BAD_VALUE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#actualType' => ref $value;
1799
1800 ;
1801 }
1802
1803 FIND: {
1804 for my $cn (@{$self->{
1805 'node'
1806 }->{
1807 'swcn'
1808 }}) {
1809 my $c = $self->
1810 _get_node_reference
1811 ($cn);
1812 if ($c->
1813 node_type eq
1814 '#element' and
1815 $c->
1816 local_name eq
1817 $localName) {
1818 $r = $c;
1819 $r->{
1820 'node'
1821 }->{
1822 'swval'
1823 } = $value;
1824 for my $rcn (@{$r->{
1825 'node'
1826 }->{
1827 'swcn'
1828 }}) {
1829 CORE::delete $rcn->{
1830 'p'
1831 };
1832 $rcn->
1833 _orphanate
1834 ;
1835 }
1836 $r->{
1837 'node'
1838 }->{
1839 'swcn'
1840 } = [];
1841 last FIND;
1842 }
1843 }
1844 ## Not found
1845
1846
1847 {
1848
1849 local $Error::Depth = $Error::Depth + 1;
1850
1851 {
1852
1853
1854
1855 $r = ($self->
1856 owner_document
1857 || $self)
1858 ->
1859 create_element_ns
1860 (
1861 undef
1862 , $localName);
1863 $self->
1864 append_node
1865 ($r);
1866 $r->{
1867 'node'
1868 }->{
1869 'swval'
1870 } = $value;
1871
1872
1873
1874 }
1875
1876
1877 ;}
1878
1879 ;
1880 } # FIND
1881
1882
1883 }
1884 $r}
1885 sub set_attribute_ns ($$$$) {
1886 my ($self, $namespaceURI, $localName, $value) = @_;
1887 my $r;
1888
1889 {
1890
1891 if
1892 ({qw/HASH 1 CODE 1/}->{ref ($value)}) {
1893
1894 report Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException -object => $self, '-type' => 'TYPE_MISMATCH_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'set_attribute_ns', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#BAD_VALUE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#actualType' => ref $value;
1895
1896 ;
1897 }
1898
1899 FIND: {
1900 for my $cn (@{$self->{
1901 'node'
1902 }->{
1903 'swcn'
1904 }}) {
1905 my $c = $self->
1906 _get_node_reference
1907 ($cn);
1908 my $cnsuri = $c->
1909 namespace_uri
1910 ;
1911 if ($c->
1912 node_type eq
1913 '#element' and
1914 ((not defined $namespaceURI and
1915 not defined $cnsuri) or
1916 (defined $namespaceURI and defined $cnsuri and
1917 $namespaceURI eq $cnsuri)) and
1918 $cn->
1919 local_name eq
1920 $localName) {
1921 $r = $c;
1922 $r->{
1923 'node'
1924 }->{
1925 'swval'
1926 } = $value;
1927 for my $rcn (@{$r->{
1928 'node'
1929 }->{
1930 'swcn'
1931 }}) {
1932 CORE::delete $rcn->{
1933 'p'
1934 };
1935 $rcn->
1936 _orphanate
1937 ;
1938 }
1939 $r->{
1940 'node'
1941 }->{
1942 'swcn'
1943 } = [];
1944 last FIND;
1945 }
1946 }
1947 ## Not found
1948
1949
1950 {
1951
1952 local $Error::Depth = $Error::Depth + 1;
1953
1954 {
1955
1956
1957
1958 $r = ($self->
1959 owner_document
1960 || $self)
1961 ->
1962 create_element_ns
1963
1964 ($namespaceURI, $localName);
1965 $self->
1966 append_node
1967 ($r);
1968 $r->{
1969 'node'
1970 }->{
1971 'swval'
1972 } = $value;
1973
1974
1975
1976 }
1977
1978
1979 ;}
1980
1981 ;
1982 } # FIND
1983
1984
1985 }
1986 $r}
1987 sub remove_attribute ($$) {
1988 my ($self, $localName) = @_;
1989 my $r = 0;
1990
1991 {
1992
1993 my
1994 @removed;
1995 $self->{
1996 'node'
1997 }->{
1998 'swcn'
1999 } = [grep {
2000 my $c = $self->
2001 _get_node_reference
2002 ($_);
2003 if ($c->
2004 node_type eq
2005 '#element' and
2006 $c->
2007 local_name eq
2008 $localName) {
2009 push @removed, $_;
2010 CORE::delete $_->{
2011 'p'
2012 };
2013
2014 0
2015 ;
2016 } else {
2017
2018 1
2019 ;
2020 }
2021 } @{$self->{
2022 'node'
2023 }->{
2024 'swcn'
2025 }}];
2026 for my $n (@removed) {
2027 $n->
2028 _orphanate
2029 ;
2030 }
2031 $r =
2032 1
2033 ;
2034
2035
2036 }
2037 $r}
2038 sub remove_attribute_ns ($$$) {
2039 my ($self, $namespaceURI, $localName) = @_;
2040 my $r = 0;
2041
2042 {
2043
2044 my
2045 @removed;
2046 $self->{
2047 'node'
2048 }->{
2049 'swcn'
2050 } = [grep {
2051 my $c = $self->
2052 _get_node_reference
2053 ($_);
2054 my $cnsuri = $c->
2055 namespace_uri
2056 ;
2057 if ($c->
2058 node_type eq
2059 '#element' and
2060 ((not defined $namespaceURI and not defined $cnsuri) or
2061 (defined $namespaceURI and defined $cnsuri and
2062 $namespaceURI eq $cnsuri)) and
2063 $c->
2064 local_name eq
2065 $localName) {
2066 push @removed, $_;
2067 CORE::delete $_->{
2068 'p'
2069 };
2070
2071 0
2072 ;
2073 } else {
2074
2075 1
2076 ;
2077 }
2078 } @{$self->{
2079 'node'
2080 }->{
2081 'swcn'
2082 }}];
2083 for my $n (@removed) {
2084 $n->
2085 _orphanate
2086 ;
2087 }
2088 $r =
2089 1
2090 ;
2091
2092
2093 }
2094 $r}
2095 sub child_nodes ($;$) {
2096 if (@_ == 1) {my ($self) = @_;
2097 my $r;
2098
2099 {
2100
2101
2102 {
2103
2104
2105 $self->{'node'}->{
2106 'rc'
2107 }++;
2108 ${$self->{'node'}->{
2109 'grc'
2110 }}++;
2111 $r = bless {
2112
2113 'node'
2114 => $self->{'node'},
2115 }, 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGChildNodeList';
2116
2117
2118 }
2119
2120 ;
2121 $r->{nodeClass} = ref $self;
2122
2123
2124 }
2125 $r;
2126 } else {my ($self) = @_;
2127 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'child_nodes';
2128 }
2129 }
2130 sub local_name ($;$) {
2131 if (@_ == 1) {my ($self) = @_;
2132 my $r = '';
2133 $r;
2134 } else {my ($self, $given) = @_;
2135 }
2136 }
2137 sub namespace_uri ($;$) {
2138 if (@_ == 1) {my ($self) = @_;
2139 my $r = '';
2140 $r;
2141 } else {my ($self, $given) = @_;
2142 }
2143 }
2144 sub node_type ($;$) {
2145 if (@_ == 1) {my ($self) = @_;
2146 my $r = '';
2147 $r = '#element';
2148 $r;
2149 } else {my ($self) = @_;
2150 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'node_type';
2151 }
2152 }
2153 sub parent_node ($;$) {
2154 if (@_ == 1) {my ($self) = @_;
2155 my $r;
2156
2157 {
2158
2159
2160 $r = $self->{
2161 'node'
2162 }->{
2163 'p'
2164 };
2165 if ($r) {
2166 if ($r->{
2167 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
2168 }) {
2169 $r = $r->{
2170 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
2171 };
2172 } elsif ($r->{
2173 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
2174 }) {
2175 $r = $r->{
2176 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
2177 }->{
2178 'p'
2179 };
2180 }
2181 }
2182 $r = $self->
2183 _get_node_reference
2184 ($r) if $r;
2185
2186
2187 }
2188 $r;
2189 } else {my ($self) = @_;
2190 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'parent_node';
2191 }
2192 }
2193 sub real_parent_node ($;$) {
2194 if (@_ == 1) {my ($self) = @_;
2195 my $r;
2196
2197 {
2198
2199
2200 $r = $self->{
2201 'node'
2202 }->{
2203 'p'
2204 };
2205 if (defined $r) {
2206 $r =
2207 Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode->_get_node_reference
2208 ($r);
2209 }
2210
2211
2212 }
2213 $r;
2214 } else {my ($self) = @_;
2215 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'real_parent_node';
2216 }
2217 }
2218 sub count ($;$) {
2219 if (@_ == 1) {my ($self) = @_;
2220 my $r = 0;
2221
2222 {
2223
2224 my
2225 $node = $self->{
2226 'node'
2227 };
2228 $r = (defined $node->{
2229 'swval'
2230 } ? 1 : 0)
2231 + @{$node->{
2232 'swcn'
2233 }};
2234
2235
2236 {
2237
2238 unless
2239 ($node->{
2240 'etx'
2241 }) {
2242
2243
2244 {
2245
2246 local $Error::Depth = $Error::Depth + 1;
2247
2248 {
2249
2250
2251 my
2252 $__qn;
2253 if ($node->{
2254 'nsx'
2255 }) {
2256 $__qn = $self->
2257 _get_node_reference
2258 ($node)
2259 ->
2260 real_qualified_name
2261 ;
2262 } else {
2263 $__qn = $node->{
2264 'swln'
2265 };
2266
2267 }
2268 my $__od = $node->{
2269 'swod'
2270 };
2271 if ($__od->{
2272 'swetb'
2273 }->{$__qn}) {
2274 my $b = $__od->{
2275 'swetb'
2276 }->{$__qn};
2277 $node->{
2278 'swns'
2279 } =
2280 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
2281 ;
2282 if ($node->{
2283 'nsx'
2284 }) {
2285 $node->{
2286 'swln'
2287 } = $__qn;
2288 } else {
2289 $node->{
2290 'nsx'
2291 } =
2292 1
2293 ;
2294 }
2295 unless ($b->{namespaceExpanded}) {
2296 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
2297 my $__prefix = $1;
2298 $b->{shadowNamespaceURI}
2299 = $self->
2300 _get_node_reference
2301 ($__od)
2302 ->
2303 lookup_namespace_uri
2304
2305 ($__prefix, make_new_binding =>
2306 0
2307 ,
2308 raise_prefix_exception =>
2309 1
2310 );
2311 }
2312 $b->{namespaceExpanded} =
2313 1
2314 ;
2315 }
2316 $node->{
2317 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
2318 } = $b->{shadowNamespaceURI};
2319 $node->{
2320 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
2321 } = $b->{shadowLocalName};
2322 for my $__p (qw/shadowContent shadowSibling/) {
2323 next unless $b->{$__p};
2324 my $cl = $self->
2325 _get_node_reference
2326 ($b->{$__p})
2327 ->clone;
2328 my $__n = $node->{{shadowContent =>
2329 'shadow'
2330 ,
2331 shadowSibling =>
2332 'shadowsib'
2333 }->{$__p}}
2334 = $cl->{
2335 'node'
2336 };
2337 $node->
2338 _import_tree
2339 ($__n);
2340 $__n->{{shadowContent =>
2341 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
2342 ,
2343 shadowSibling =>
2344 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
2345 }->{$__p}} = $node;
2346 }
2347 }
2348 $node->{
2349 'etx'
2350 } =
2351 1
2352 ;
2353
2354
2355
2356 }
2357
2358
2359 ;}
2360
2361 ;
2362 }
2363
2364
2365 }
2366
2367 ;
2368 if ($node->{
2369 'shadow'
2370 }) {
2371 $r++ if not defined $node->{
2372 'swval'
2373 } and
2374 defined $node->{
2375 'shadow'
2376 }->{
2377 'swval'
2378 };
2379 $r += @{$node->{
2380 'shadow'
2381 }->{
2382 'swcn'
2383 }};
2384 }
2385 for my $cc (@{$node->{
2386 'swcn'
2387 }}) {
2388
2389
2390 {
2391
2392 unless
2393 ($cc->{
2394 'etx'
2395 }) {
2396
2397
2398 {
2399
2400 local $Error::Depth = $Error::Depth + 1;
2401
2402 {
2403
2404
2405 my
2406 $__qn;
2407 if ($cc->{
2408 'nsx'
2409 }) {
2410 $__qn = $self->
2411 _get_node_reference
2412 ($cc)
2413 ->
2414 real_qualified_name
2415 ;
2416 } else {
2417 $__qn = $cc->{
2418 'swln'
2419 };
2420
2421 }
2422 my $__od = $cc->{
2423 'swod'
2424 };
2425 if ($__od->{
2426 'swetb'
2427 }->{$__qn}) {
2428 my $b = $__od->{
2429 'swetb'
2430 }->{$__qn};
2431 $cc->{
2432 'swns'
2433 } =
2434 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
2435 ;
2436 if ($cc->{
2437 'nsx'
2438 }) {
2439 $cc->{
2440 'swln'
2441 } = $__qn;
2442 } else {
2443 $cc->{
2444 'nsx'
2445 } =
2446 1
2447 ;
2448 }
2449 unless ($b->{namespaceExpanded}) {
2450 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
2451 my $__prefix = $1;
2452 $b->{shadowNamespaceURI}
2453 = $self->
2454 _get_node_reference
2455 ($__od)
2456 ->
2457 lookup_namespace_uri
2458
2459 ($__prefix, make_new_binding =>
2460 0
2461 ,
2462 raise_prefix_exception =>
2463 1
2464 );
2465 }
2466 $b->{namespaceExpanded} =
2467 1
2468 ;
2469 }
2470 $cc->{
2471 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
2472 } = $b->{shadowNamespaceURI};
2473 $cc->{
2474 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
2475 } = $b->{shadowLocalName};
2476 for my $__p (qw/shadowContent shadowSibling/) {
2477 next unless $b->{$__p};
2478 my $cl = $self->
2479 _get_node_reference
2480 ($b->{$__p})
2481 ->clone;
2482 my $__n = $cc->{{shadowContent =>
2483 'shadow'
2484 ,
2485 shadowSibling =>
2486 'shadowsib'
2487 }->{$__p}}
2488 = $cl->{
2489 'node'
2490 };
2491 $cc->
2492 _import_tree
2493 ($__n);
2494 $__n->{{shadowContent =>
2495 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
2496 ,
2497 shadowSibling =>
2498 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
2499 }->{$__p}} = $cc;
2500 }
2501 }
2502 $cc->{
2503 'etx'
2504 } =
2505 1
2506 ;
2507
2508
2509
2510 }
2511
2512
2513 ;}
2514
2515 ;
2516 }
2517
2518
2519 }
2520
2521 ;
2522 $r += @{$cc->{
2523 'shadowsib'
2524 }->{
2525 'swcn'
2526 }}
2527 if $cc->{
2528 'shadowsib'
2529 };
2530 }
2531
2532
2533 }
2534 $r;
2535 } else {my ($self) = @_;
2536 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'count';
2537 }
2538 }
2539 sub real_count ($;$) {
2540 if (@_ == 1) {my ($self) = @_;
2541 my $r = 0;
2542
2543 {
2544
2545
2546 $r = (defined $self->{
2547 'node'
2548 }->{
2549 'swval'
2550 } ? 1 : 0)
2551 + @{$self->{
2552 'node'
2553 }->{
2554 'swcn'
2555 }};
2556
2557
2558 }
2559 $r;
2560 } else {my ($self) = @_;
2561 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'real_count';
2562 }
2563 }
2564 sub inner_text ($;%) {
2565 my ($self, %opt) = @_;
2566 my $r = '';
2567
2568 {
2569
2570 my
2571 $node = $self->{
2572 'node'
2573 };
2574 if (defined $opt{new_value}) {
2575 $node->{
2576 'swval'
2577 } = $opt{new_value};
2578 }
2579 my $v;
2580 if (defined $node->{
2581 'swval'
2582 }) {
2583 $v = $node->{
2584 'swval'
2585 };
2586 } else {
2587
2588
2589 {
2590
2591 unless
2592 ($node->{
2593 'etx'
2594 }) {
2595
2596
2597 {
2598
2599 local $Error::Depth = $Error::Depth + 1;
2600
2601 {
2602
2603
2604 my
2605 $__qn;
2606 if ($node->{
2607 'nsx'
2608 }) {
2609 $__qn = $self->
2610 _get_node_reference
2611 ($node)
2612 ->
2613 real_qualified_name
2614 ;
2615 } else {
2616 $__qn = $node->{
2617 'swln'
2618 };
2619
2620 }
2621 my $__od = $node->{
2622 'swod'
2623 };
2624 if ($__od->{
2625 'swetb'
2626 }->{$__qn}) {
2627 my $b = $__od->{
2628 'swetb'
2629 }->{$__qn};
2630 $node->{
2631 'swns'
2632 } =
2633 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
2634 ;
2635 if ($node->{
2636 'nsx'
2637 }) {
2638 $node->{
2639 'swln'
2640 } = $__qn;
2641 } else {
2642 $node->{
2643 'nsx'
2644 } =
2645 1
2646 ;
2647 }
2648 unless ($b->{namespaceExpanded}) {
2649 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
2650 my $__prefix = $1;
2651 $b->{shadowNamespaceURI}
2652 = $self->
2653 _get_node_reference
2654 ($__od)
2655 ->
2656 lookup_namespace_uri
2657
2658 ($__prefix, make_new_binding =>
2659 0
2660 ,
2661 raise_prefix_exception =>
2662 1
2663 );
2664 }
2665 $b->{namespaceExpanded} =
2666 1
2667 ;
2668 }
2669 $node->{
2670 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
2671 } = $b->{shadowNamespaceURI};
2672 $node->{
2673 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
2674 } = $b->{shadowLocalName};
2675 for my $__p (qw/shadowContent shadowSibling/) {
2676 next unless $b->{$__p};
2677 my $cl = $self->
2678 _get_node_reference
2679 ($b->{$__p})
2680 ->clone;
2681 my $__n = $node->{{shadowContent =>
2682 'shadow'
2683 ,
2684 shadowSibling =>
2685 'shadowsib'
2686 }->{$__p}}
2687 = $cl->{
2688 'node'
2689 };
2690 $node->
2691 _import_tree
2692 ($__n);
2693 $__n->{{shadowContent =>
2694 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
2695 ,
2696 shadowSibling =>
2697 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
2698 }->{$__p}} = $node;
2699 }
2700 }
2701 $node->{
2702 'etx'
2703 } =
2704 1
2705 ;
2706
2707
2708
2709 }
2710
2711
2712 ;}
2713
2714 ;
2715 }
2716
2717
2718 }
2719
2720 ;
2721 $v = defined $node->{
2722 'shadow'
2723 }
2724 ? $node->{
2725 'shadow'
2726 }->{
2727 'swval'
2728 } :
2729 undef
2730 ;
2731 }
2732 $r = ref $v eq 'ARRAY' ? join "\x0A", @$v : $v;
2733
2734
2735 }
2736 $r}
2737 sub actual_inner_text ($;%) {
2738 my ($self, %opt) = @_;
2739 my $r = '';
2740
2741 {
2742
2743 my
2744 $node = $self->{
2745 'node'
2746 };
2747 if (defined $opt{new_value}) {
2748 $node->{
2749 'swval'
2750 } = $opt{new_value};
2751 }
2752 my $v;
2753 if (defined $node->{
2754 'swval'
2755 }) {
2756 $v = $node->{
2757 'swval'
2758 };
2759 }
2760 $r = ref $v eq 'ARRAY' ? join "\x0A", @$v : $v;
2761
2762
2763 }
2764 $r}
2765 sub value ($%) {
2766 my ($self, %opt) = @_;
2767 my $r;
2768
2769 {
2770
2771 my
2772 $node = $self->{
2773 'node'
2774 };
2775 my $v;
2776 if (defined $node->{
2777 'swval'
2778 }) {
2779 $v = $node->{
2780 'swval'
2781 };
2782 } else {
2783
2784
2785 {
2786
2787 unless
2788 ($node->{
2789 'etx'
2790 }) {
2791
2792
2793 {
2794
2795 local $Error::Depth = $Error::Depth + 1;
2796
2797 {
2798
2799
2800 my
2801 $__qn;
2802 if ($node->{
2803 'nsx'
2804 }) {
2805 $__qn = $self->
2806 _get_node_reference
2807 ($node)
2808 ->
2809 real_qualified_name
2810 ;
2811 } else {
2812 $__qn = $node->{
2813 'swln'
2814 };
2815
2816 }
2817 my $__od = $node->{
2818 'swod'
2819 };
2820 if ($__od->{
2821 'swetb'
2822 }->{$__qn}) {
2823 my $b = $__od->{
2824 'swetb'
2825 }->{$__qn};
2826 $node->{
2827 'swns'
2828 } =
2829 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
2830 ;
2831 if ($node->{
2832 'nsx'
2833 }) {
2834 $node->{
2835 'swln'
2836 } = $__qn;
2837 } else {
2838 $node->{
2839 'nsx'
2840 } =
2841 1
2842 ;
2843 }
2844 unless ($b->{namespaceExpanded}) {
2845 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
2846 my $__prefix = $1;
2847 $b->{shadowNamespaceURI}
2848 = $self->
2849 _get_node_reference
2850 ($__od)
2851 ->
2852 lookup_namespace_uri
2853
2854 ($__prefix, make_new_binding =>
2855 0
2856 ,
2857 raise_prefix_exception =>
2858 1
2859 );
2860 }
2861 $b->{namespaceExpanded} =
2862 1
2863 ;
2864 }
2865 $node->{
2866 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
2867 } = $b->{shadowNamespaceURI};
2868 $node->{
2869 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
2870 } = $b->{shadowLocalName};
2871 for my $__p (qw/shadowContent shadowSibling/) {
2872 next unless $b->{$__p};
2873 my $cl = $self->
2874 _get_node_reference
2875 ($b->{$__p})
2876 ->clone;
2877 my $__n = $node->{{shadowContent =>
2878 'shadow'
2879 ,
2880 shadowSibling =>
2881 'shadowsib'
2882 }->{$__p}}
2883 = $cl->{
2884 'node'
2885 };
2886 $node->
2887 _import_tree
2888 ($__n);
2889 $__n->{{shadowContent =>
2890 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
2891 ,
2892 shadowSibling =>
2893 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
2894 }->{$__p}} = $node;
2895 }
2896 }
2897 $node->{
2898 'etx'
2899 } =
2900 1
2901 ;
2902
2903
2904
2905 }
2906
2907
2908 ;}
2909
2910 ;
2911 }
2912
2913
2914 }
2915
2916 ;
2917 $v = defined $node->{
2918 'shadow'
2919 }
2920 ? $node->{
2921 'shadow'
2922 }->{
2923 'swval'
2924 } :
2925 undef
2926 ;
2927 }
2928 if ($opt{as_array} and ref $v ne 'ARRAY') {
2929 $r = defined $v ? [$v] : [];
2930 } else {
2931 $r = $v;
2932 }
2933
2934
2935 }
2936 $r}
2937 sub value_ref ($;$) {
2938 if (@_ == 1) {my ($self) = @_;
2939 my $r;
2940
2941 {
2942
2943 my
2944 $node = $self->{
2945 'node'
2946 };
2947 if (defined $node->{
2948 'swval'
2949 }) {
2950 $r = \ ($node->{
2951 'swval'
2952 });
2953 } else {
2954
2955
2956 {
2957
2958 unless
2959 ($node->{
2960 'etx'
2961 }) {
2962
2963
2964 {
2965
2966 local $Error::Depth = $Error::Depth + 1;
2967
2968 {
2969
2970
2971 my
2972 $__qn;
2973 if ($node->{
2974 'nsx'
2975 }) {
2976 $__qn = $self->
2977 _get_node_reference
2978 ($node)
2979 ->
2980 real_qualified_name
2981 ;
2982 } else {
2983 $__qn = $node->{
2984 'swln'
2985 };
2986
2987 }
2988 my $__od = $node->{
2989 'swod'
2990 };
2991 if ($__od->{
2992 'swetb'
2993 }->{$__qn}) {
2994 my $b = $__od->{
2995 'swetb'
2996 }->{$__qn};
2997 $node->{
2998 'swns'
2999 } =
3000 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
3001 ;
3002 if ($node->{
3003 'nsx'
3004 }) {
3005 $node->{
3006 'swln'
3007 } = $__qn;
3008 } else {
3009 $node->{
3010 'nsx'
3011 } =
3012 1
3013 ;
3014 }
3015 unless ($b->{namespaceExpanded}) {
3016 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
3017 my $__prefix = $1;
3018 $b->{shadowNamespaceURI}
3019 = $self->
3020 _get_node_reference
3021 ($__od)
3022 ->
3023 lookup_namespace_uri
3024
3025 ($__prefix, make_new_binding =>
3026 0
3027 ,
3028 raise_prefix_exception =>
3029 1
3030 );
3031 }
3032 $b->{namespaceExpanded} =
3033 1
3034 ;
3035 }
3036 $node->{
3037 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
3038 } = $b->{shadowNamespaceURI};
3039 $node->{
3040 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
3041 } = $b->{shadowLocalName};
3042 for my $__p (qw/shadowContent shadowSibling/) {
3043 next unless $b->{$__p};
3044 my $cl = $self->
3045 _get_node_reference
3046 ($b->{$__p})
3047 ->clone;
3048 my $__n = $node->{{shadowContent =>
3049 'shadow'
3050 ,
3051 shadowSibling =>
3052 'shadowsib'
3053 }->{$__p}}
3054 = $cl->{
3055 'node'
3056 };
3057 $node->
3058 _import_tree
3059 ($__n);
3060 $__n->{{shadowContent =>
3061 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
3062 ,
3063 shadowSibling =>
3064 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
3065 }->{$__p}} = $node;
3066 }
3067 }
3068 $node->{
3069 'etx'
3070 } =
3071 1
3072 ;
3073
3074
3075
3076 }
3077
3078
3079 ;}
3080
3081 ;
3082 }
3083
3084
3085 }
3086
3087 ;
3088 $r = defined $node->{
3089 'shadow'
3090 }
3091 ? \ ($node->{
3092 'shadow'
3093 }->{
3094 'swval'
3095 }) :
3096 undef
3097 ;
3098 }
3099
3100
3101 }
3102 $r;
3103 } else {my ($self) = @_;
3104 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'value_ref';
3105 }
3106 }
3107 sub stringify ($;%) {
3108 my ($self, %opt) = @_;
3109 my $r = '';
3110
3111 {
3112
3113 my
3114 $nt = $self->
3115 node_type
3116 ;
3117 my $node = $self->{
3118 'node'
3119 };
3120 if ($nt eq '#element') {
3121 $r = $self->
3122 actual_inner_text
3123 ;
3124 if (scalar @{$node->{
3125 'swcn'
3126 }}) {
3127 if (defined $r) {
3128 $r =~ s/(^|\x0A)(?=([\\\@\#\s]|$))?/$1." ".
3129 (defined $2?"\\":"")/ges;
3130 $r = $self->
3131 real_qualified_name
3132
3133 . ":\x0A \@\@"
3134 . (ref ($node->{
3135 'swval'
3136 }) eq 'ARRAY' ? '[list]' : '')
3137 . ":" . ((($r !~ /[\x0D\x0A:]/) and (length ($r) < 50))
3138 ? '' : "\x0A")
3139 . (length $r ? $r : '\\') . "\x0A";
3140 } else {
3141 $r = $self->
3142 real_qualified_name
3143
3144 . ":\x0A";
3145 }
3146 for my $cn (@{$node->{
3147 'swcn'
3148 }}) {
3149 next unless $cn->{
3150 'swnt'
3151 } eq '#element';
3152 my $rc = $self->
3153 _get_node_reference
3154 ($cn)
3155 ->stringify;
3156 $rc =~ s/\x0A /\x0A /gs;
3157 $rc =~ s/(\x0A +\@)/$1\@/gs;
3158 $r .= ' @' . $rc;
3159 }
3160 } else {
3161 $r = '' unless defined $r;
3162 $r =~ s/(^|\x0A)(?=([\\\@\#\s]|$))?/$1." ".(defined $2?"\\":"")/ges;
3163 $r = $self->
3164 real_qualified_name
3165
3166 . (ref ($node->{
3167 'swval'
3168 }) eq 'ARRAY' ? '[list]' : '')
3169 . ":" . ((($r !~ /[\x0D\x0A:]/) and (length ($r) < 50))
3170 ? '' : "\x0A")
3171 . (length $r ? $r : '\\') . "\x0A";
3172 }
3173 $r = "\\" . $r if substr ($r, 0, 1) =~ /[\\\@\#\s]/;
3174 } elsif ($nt eq '#document') {
3175 if ($opt{output_header}) {
3176 $r = '#?SuikaWikiConfig/' . $node->{
3177 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#version'
3178 } . "\n";
3179 }
3180
3181 for my $cn (@{$node->{
3182 'swcn'
3183 }}) {
3184 $r .= "\x0A";
3185 $r .= $self->
3186 _get_node_reference
3187 ($cn)->stringify;
3188 }
3189
3190 ## Element Type Binding
3191 my $eb = '';
3192 for my $bk (sort keys %{$self->{
3193 'node'
3194 }
3195 ->{
3196 'swetb'
3197 }}) {
3198 my $b = $self->{
3199 'node'
3200 }->{
3201 'swetb'
3202 }->{$bk};
3203 next unless $b;
3204 $eb .= "\x0A" . 'ElementTypeBinding:' . "\x0A"
3205 . ' @Name:' . "\x0A"
3206 . ' ' . $b->{elementType} . "\x0A"
3207 . ' @ElementType:' . "\x0A"
3208 . ' ';
3209 if ($b->{namespaceExpanded}) {
3210 $eb .= $self->
3211 lookup_namespace_prefix
3212
3213 ($b->{shadowNamespaceURI}, make_new_binding =>
3214 1
3215 );
3216 $eb .= $b->{shadowLocalName};
3217 } else {
3218 ## NOTE: If namespace binding has changed,
3219 ## associated namespace URI might change.
3220 $eb .= $b->{shadowLocalName};
3221 }
3222 $eb .= "\x0A";
3223 for my $p (qw/shadowContent shadowSibling/) {
3224 next unless $b->{$p};
3225 $eb .= ' @' . ucfirst ($p) . ":\x0A";
3226 my $rc = $self->
3227 _get_node_reference
3228 ($b->{$p});
3229 my $ebc = $rc->stringify;
3230 $ebc =~ s/\x0A /\x0A /gs;
3231 $ebc =~ s/(\x0A +\@)/$1\@\@/gs;
3232 $ebc =~ s/\x0A(?=\S)/\x0A \@\@/gs;
3233 $eb .= ' @@' . $ebc;
3234 $ebc = $rc->
3235 inner_text
3236 ;
3237 if (defined $ebc) {
3238 $ebc =~ s/(^|\x0A)(?=([\\\@\#\s]|$))?/$1.' '.
3239 (defined $2?"\\":"")/ges;
3240 $eb .= ' @@@'
3241 . (ref ($b->{$p}->{
3242 'swval'
3243 }) eq 'ARRAY' ? '[list]' : '')
3244 . ":" . ((($ebc !~ /[\x0D\x0A:]/) and (length ($ebc) < 50))
3245 ? '' : "\x0A")
3246 . (length $ebc ? $ebc : '\\') . "\x0A";
3247 }
3248 }
3249 } # swcfg21:etBinding
3250 $r .= $eb;
3251
3252 ## Namespace bindings
3253 my $ns = '';
3254 for my $pfx (sort keys %{$self->{
3255 'node'
3256 }
3257 ->{
3258 'swnsb'
3259 }}) {
3260 if ($pfx ne 'URI') {
3261 $ns .= ' @' . $pfx . ':' . "\x0A"
3262 . ' ';
3263 my $uri = $self->{
3264 'node'
3265 }->{
3266 'swnsb'
3267 }->{$pfx};
3268 if (defined $uri) {
3269 if (length $uri) {
3270 if ($uri =~ /^[\\#\s\@]/) {
3271 $ns .= '\\' . $uri . "\x0A";
3272 } else {
3273 $ns .= $uri . "\x0A";
3274 }
3275 } else {
3276 $ns .= "\\\x0A";
3277 }
3278 } else {
3279 $ns .= '@@is-
3280 undef:
3281 1' . "\x0A";
3282 }
3283 }
3284 }
3285 $r .= "\x0A" . 'Namespace:' . "\x0A" . $ns . "\x0A" if length $ns;
3286 } elsif ($nt eq '#comment') {
3287 $r = $self->
3288 inner_text
3289 ;
3290 $r =~ s/\x0A/\x0A#/gs;
3291 $r = '#' . $r . "\n";
3292 } elsif ($nt eq '#fragment') {
3293 for my $cn (@{$node->{
3294 'swcn'
3295 }}) {
3296 $r .= $self->
3297 _get_node_reference
3298 ($cn)->stringify;
3299 }
3300 } else {
3301
3302
3303 ;
3304 }
3305
3306
3307 }
3308 $r}
3309 sub root_node ($;$) {
3310 if (@_ == 1) {my ($self) = @_;
3311 my $r;
3312
3313 {
3314
3315
3316 $r = $self->{
3317 'node'
3318 };
3319 {
3320 if ($r->{
3321 'p'
3322 }) {
3323 $r = $r->{
3324 'p'
3325 };
3326 redo;
3327 } elsif ($r->{
3328 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
3329 }) {
3330 $r = $r->{
3331 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
3332 };
3333 redo;
3334 } elsif ($r->{
3335 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
3336 }) {
3337 $r = $r->{
3338 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
3339 };
3340 redo;
3341 } elsif ($r->{
3342 'shadowmaster'
3343 }) {
3344 $r = $r->{
3345 'swod'
3346 };
3347 }
3348 }
3349 $r = $self->
3350 _get_node_reference
3351 ($r);
3352
3353
3354 }
3355 $r;
3356 } else {my ($self) = @_;
3357 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'root_node';
3358 }
3359 }
3360 sub node_path ($;%) {
3361 my ($self, %opt) = @_;
3362 my $r = '';
3363
3364 {
3365
3366
3367 {
3368
3369 local $Error::Depth = $Error::Depth + 1;
3370
3371 {
3372
3373
3374 my
3375 $parent = $self->
3376 parent_node
3377 ;
3378 if ($parent) {
3379 $r = $parent->
3380 node_path
3381 (%opt);
3382 } else {
3383 $r = '';
3384 }
3385 my $node_type = $self->
3386 node_type
3387 ;
3388 if ($node_type eq '#element') {
3389 $r .= '/' . $self->
3390 real_qualified_name
3391 ;
3392 if ($opt{key}) {
3393 for my $k (ref $opt{key} eq 'ARRAY' ? @{$opt{key}} : $opt{key}) {
3394 my $key_val = $self->
3395 get_attribute_value
3396 ($k);
3397 if (defined $key_val) {
3398 $r .= '[@' . $k . '=' . $key_val . ']';
3399 }
3400 }
3401 }
3402 } elsif ($node_type eq '#comment') {
3403 $r .= q</comment ()>;
3404 } elsif ($node_type eq '#document') {
3405 $r .= q</document (>
3406 . ($self->
3407 flag
3408 (
3409 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#fileName'
3410 ) || '')
3411 . q<)>;
3412 } elsif ($node_type eq '#fragment') {
3413 $r .= q</fragment ()>;
3414 } else {
3415
3416
3417 ;
3418 }
3419
3420
3421
3422 }
3423
3424
3425 ;}
3426
3427 ;
3428
3429
3430 }
3431 $r}
3432 sub flag ($$;$%) {
3433 my ($self, $name, $value, %opt) = @_;
3434 my $r;
3435
3436 {
3437
3438 if
3439 (defined $value) {
3440 $r = $self->{
3441 'node'
3442 }->{
3443 'swflag'
3444 }->{$name} = $value;
3445 } else {
3446 $r = defined $self->{
3447 'node'
3448 }->{
3449 'swflag'
3450 }->{$name}
3451 ? $self->{
3452 'node'
3453 }->{
3454 'swflag'
3455 }->{$name} : $opt{default};
3456 }
3457
3458
3459 }
3460 $r}
3461 sub option ($$;$) {
3462 my ($self, $name, $value) = @_;
3463 my $r;
3464
3465 {
3466
3467 if
3468 (defined $value) {
3469 $self->{
3470 'node'
3471 }->{
3472 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#option'
3473 }->{$name} = $value;
3474 }
3475 $r = $self->{
3476 'node'
3477 }->{
3478 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#option'
3479 }->{$name};
3480
3481
3482 }
3483 $r}
3484 sub clone ($) {
3485 my ($self) = @_;
3486 my $r;
3487
3488 {
3489
3490
3491 {
3492
3493 local $Error::Depth = $Error::Depth + 1;
3494
3495 {
3496
3497
3498 my
3499 $od = $self->
3500 owner_document
3501 || $self;
3502 my $nt = $self->
3503 node_type
3504 ;
3505 if ($nt eq '#element') {
3506 $r = $self->
3507 _get_node_reference
3508
3509 (
3510 Message::Markup::SuikaWikiConfig21::ManakaiSWCFGElement->_new_object
3511 );
3512 for my $p (
3513 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
3514 ,
3515 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
3516 ,
3517
3518 'swln'
3519 ,
3520 'swns'
3521 ,
3522
3523 'nsx'
3524 ,
3525 'etx'
3526 ,
3527
3528 'swod'
3529 ) {
3530 $r->{
3531 'node'
3532 }->{$p} = $self->{
3533 'node'
3534 }->{$p};
3535 }
3536 $r->{
3537 'node'
3538 }->{
3539 'swval'
3540 }
3541 = defined $self->{
3542 'node'
3543 }->{
3544 'swval'
3545 }
3546 ? ref $self->{
3547 'node'
3548 }->{
3549 'swval'
3550 } eq 'ARRAY'
3551 ? [@{$self->{
3552 'node'
3553 }->{
3554 'swval'
3555 }}]
3556 : $self->{
3557 'node'
3558 }->{
3559 'swval'
3560 } :
3561 undef
3562 ;
3563 for my $p (
3564 'shadow'
3565 ,
3566 'shadowsib'
3567 ) {
3568 if ($self->{
3569 'node'
3570 }->{$p}) {
3571 my $c = $self->
3572 _get_node_reference
3573
3574 ($self->{
3575 'node'
3576 }->{$p})->clone;
3577 $r->{
3578 'node'
3579 }->{$p} = $c->{
3580 'node'
3581 };
3582 $r->{
3583 'node'
3584 }
3585 ->
3586 _import_tree
3587 ($r->{
3588 'node'
3589 }->{$p});
3590 $r->{
3591 'node'
3592 }->{$p}
3593 ->{+{
3594
3595 'shadow'
3596 =>
3597 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
3598 ,
3599
3600 'shadowsib'
3601 =>
3602 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
3603 ,
3604 }->{$p}} = $r->{
3605 'node'
3606 };
3607 }
3608 }
3609 for my $cn (@{$self->{
3610 'node'
3611 }->{
3612 'swcn'
3613 }}) {
3614 my $c = $self->
3615 _get_node_reference
3616 ($cn);
3617 $r->
3618 append_node
3619 ($c->clone);
3620 }
3621 } elsif ($nt eq '#comment') {
3622 $r = $od->
3623 create_comment
3624
3625 ($self->{
3626 'node'
3627 }->{
3628 'swval'
3629 });
3630 } elsif ($nt eq '#fragment') {
3631 $r = $od->
3632 create_document_fragment
3633 ;
3634 ## swcfg21:isShadowMaster property is not copied
3635 for my $cn (@{$self->{
3636 'node'
3637 }->{
3638 'swcn'
3639 }}) {
3640 my $c = $self->
3641 _get_node_reference
3642 ($cn);
3643 $r->
3644 append_node
3645 ($c->clone);
3646 }
3647 $r->{
3648 'node'
3649 }->{
3650 'swval'
3651 }
3652 = defined $self->{
3653 'node'
3654 }->{
3655 'swval'
3656 }
3657 ? ref $self->{
3658 'node'
3659 }->{
3660 'swval'
3661 } eq 'ARRAY'
3662 ? [@{$self->{
3663 'node'
3664 }->{
3665 'swval'
3666 }}]
3667 : $self->{
3668 'node'
3669 }->{
3670 'swval'
3671 } :
3672 undef
3673 ;
3674 } elsif ($nt eq '#document') {
3675 $r = $od->
3676 implementation
3677
3678 ->
3679 create_swcfg_document
3680 ;
3681 $r->{
3682 'node'
3683 }->{
3684 'swnsb'
3685 }
3686 = {%{$self->{
3687 'node'
3688 }->{
3689 'swnsb'
3690 }}};
3691 for my $bk (keys %{$self->{
3692 'node'
3693 }->{
3694 'swetb'
3695 }}) {
3696 my $b = $self->{
3697 'node'
3698 }->{
3699 'swetb'
3700 }->{$bk};
3701 next unless $b;
3702 my $c = $r->{
3703 'node'
3704 }->{
3705 'swetb'
3706 }->{$bk} = {
3707 elementType => $b->{elementType},
3708 shadowLocalName => $b->{shadowLocalName},
3709 shadowNamespaceURI => $b->{shadowNamespaceURI},
3710 namespaceExpanded => $b->{namespaceExpanded},
3711 };
3712 for my $p (qw/shadowContent shadowSibling/) {
3713 if ($b->{$p}) {
3714 my $cl = $self->
3715 _get_node_reference
3716
3717 ($b->{$p})->clone;
3718 $c->{$p} = $cl->{
3719 'node'
3720 };
3721 $r->{
3722 'node'
3723 }->
3724 _import_tree
3725 ($c->{$p});
3726 my @l = $c->{$p};
3727 while (@l) {
3728 my $l = shift @l; next unless $l;
3729 $l->{
3730 'swod'
3731 } = $r->{
3732 'node'
3733 };
3734 for my $n (@{$l->{
3735 'swcn'
3736 }},
3737 $l->{
3738 'shadow'
3739 }, ## Does not allowed
3740 $l->{
3741 'shadowsib'
3742 }) { ## but for safe
3743 push @l, $n;
3744 }
3745 }
3746 $c->{$p}->{
3747 'shadowmaster'
3748 } =
3749 1
3750 ;
3751 }
3752 }
3753 }
3754 for my $cn (@{$self->{
3755 'node'
3756 }->{
3757 'swcn'
3758 }}) {
3759 my $c = $self->
3760 _get_node_reference
3761 ($cn)->clone;
3762 $r->{
3763 'node'
3764 }
3765 ->
3766 _import_tree
3767 ($c->{
3768 'node'
3769 });
3770 my @l = $c->{
3771 'node'
3772 };
3773 while (@l) {
3774 my $l = shift @l; next unless $l;
3775
3776
3777 {
3778
3779
3780 $l->{'swod'} = $r->{'node'};
3781 if (${$l->{
3782 'tid'
3783 }} ne ${$r->{'node'}->{
3784 'tid'
3785 }}) {
3786 $r->{'node'}->{
3787 'rc'
3788 }++;
3789 ${$r->{'node'}->{
3790 'grc'
3791 }}++;
3792 }
3793
3794
3795 }
3796
3797 ;
3798 for my $n (@{$l->{
3799 'swcn'
3800 }},
3801 $l->{
3802 'shadow'
3803 },
3804 $l->{
3805 'shadowsib'
3806 }) {
3807 push @l, $n;
3808 }
3809 }
3810 $r->
3811 append_node
3812 ($c);
3813 }
3814 } else {
3815
3816
3817 ;
3818 }
3819
3820
3821
3822 }
3823
3824
3825 ;}
3826
3827 ;
3828 $r->{
3829 'node'
3830 }->{
3831 'swflag'
3832 }
3833 = {%{$self->{
3834 'node'
3835 }->{
3836 'swflag'
3837 }||{}}};
3838 $r->{
3839 'node'
3840 }->{
3841 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#option'
3842 }
3843 = {%{$self->{
3844 'node'
3845 }->{
3846 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#option'
3847 }||{}}};
3848
3849
3850 }
3851 $r}
3852 sub owner_document ($;$) {
3853 if (@_ == 1) {my ($self) = @_;
3854 my $r;
3855
3856 {
3857
3858
3859 $r = $self->{
3860 'node'
3861 }->{
3862 'swod'
3863 };
3864 if (defined $r) {
3865 $r =
3866 Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode->_get_node_reference
3867 ($r);
3868 }
3869
3870
3871 }
3872 $r;
3873 } else {my ($self) = @_;
3874 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'owner_document';
3875 }
3876 }
3877 sub lookup_namespace_prefix ($;$%) {
3878 my ($self, $namespaceURI, %opt) = @_;
3879 my $r = '';
3880
3881 {
3882
3883
3884 $r =
3885 undef
3886 ;
3887 my $od = $self->
3888 owner_document
3889 || $self;
3890 my $binds = $od->{
3891 'node'
3892 }->{
3893 'swnsb'
3894 };
3895 if (defined $namespaceURI) {
3896 FIND: {
3897 for my $prefix (keys %$binds) {
3898 if (defined $binds->{$prefix} and
3899 $binds->{$prefix} eq $namespaceURI) {
3900 $r = $prefix;
3901 last FIND;
3902 }
3903 }
3904 last FIND unless $opt{make_new_binding};
3905 ## Not found
3906 if ($namespaceURI =~ /(\w+)$/) {
3907 my $prefix = $1;
3908 unless (exists $binds->{$prefix}) {
3909 $binds->{$prefix} = $namespaceURI;
3910 $r = $prefix;
3911 last FIND;
3912 }
3913 }
3914 my $i = 1;
3915 {
3916 unless (exists $binds->{'ns'.$i}) {
3917 $binds->{$r = 'ns'.$i} = $namespaceURI;
3918 last FIND;
3919 }
3920 $i++;
3921 redo;
3922 }
3923 } # FIND
3924 } else { ## Null namespace
3925 FIND: {
3926 if (exists $binds->{'nu'.'ll'} and not defined $binds->{'nu'.'ll'}) {
3927 $r = 'nu'.'ll';
3928 last FIND;
3929 }
3930 for my $prefix (keys %$binds) {
3931 if (not defined $prefix) {
3932 $r = $prefix;
3933 last FIND;
3934 }
3935 }
3936 last FIND unless $opt{make_new_binding};
3937 ## Not found
3938 my $i = '';
3939 {
3940 unless (exists $binds->{'nu'.'ll'.$i}) {
3941 $binds->{$r = 'nu'.'ll'.$i} =
3942 undef
3943 ;
3944 last FIND;
3945 }
3946 $i++;
3947 redo;
3948 }
3949 }
3950 }
3951
3952
3953 }
3954 $r}
3955 sub lookup_namespace_uri ($$%) {
3956 my ($self, $prefix, %opt) = @_;
3957 my $r = '';
3958
3959 {
3960
3961 my
3962 $od = $self->
3963 owner_document
3964 || $self;
3965 my $binds = $od->{
3966 'node'
3967 }->{
3968 'swnsb'
3969 };
3970 if (exists $binds->{$prefix}) {
3971 $r = $binds->{$prefix};
3972 } elsif ($opt{make_new_binding}) {
3973 $r = $binds->{$prefix} = $prefix;
3974 } elsif ($opt{raise_prefix_exception}) {
3975
3976 report Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $self, '-type' => 'NAMESPACE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'lookup_namespace_uri', 'http://www.w3.org/2001/04/infoset#prefix' => $prefix, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#UNDECLARED_NS_PREFIX_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'prefix';
3977
3978 ;
3979 } else {
3980 $r =
3981 undef
3982 ;
3983 }
3984
3985
3986 }
3987 $r}
3988 sub bind_namespace_uri ($$;$) {
3989 my ($self, $prefix, $namespaceURI) = @_;
3990
3991 {
3992
3993 unless
3994 ($prefix eq 'URI') {
3995 my $od = $self->
3996 owner_document
3997 || $self;
3998 if (defined $namespaceURI) {
3999 $od->{
4000 'node'
4001 }->{
4002 'swnsb'
4003 }->{$prefix}
4004 = $namespaceURI;
4005 } else {
4006 CORE::delete $od->{
4007 'node'
4008 }->{
4009 'swnsb'
4010 }->{$prefix};
4011 }
4012 }
4013
4014
4015 }
4016 }
4017 sub _get_node_reference ($$) {
4018 my ($self, $object) = @_;
4019 my $r;
4020
4021 {
4022
4023 my
4024 $class;
4025 if ($object->{
4026 'swnt'
4027 } eq '#element') {
4028 $class =
4029 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGElement'
4030 ;
4031 } elsif ($object->{
4032 'swnt'
4033 } eq '#comment') {
4034 $class =
4035 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGComment'
4036 ;
4037 } elsif ($object->{
4038 'swnt'
4039 } eq '#document') {
4040 $class =
4041 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocument'
4042 ;
4043 } elsif ($object->{
4044 'swnt'
4045 } eq '#fragment') {
4046 $class =
4047 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocumentFragment'
4048 ;
4049 } else {
4050
4051
4052 ;
4053 }
4054
4055
4056 {
4057
4058
4059 $object->{
4060 'rc'
4061 }++;
4062 ${$object->{
4063 'grc'
4064 }}++;
4065 $r = bless {
4066
4067 'node'
4068 => $object,
4069 }, $class;
4070
4071
4072 }
4073
4074 ;
4075
4076
4077 }
4078 $r}
4079 sub is_same_node ($$) {
4080 my ($self, $other) = @_;
4081 my $r = 0;
4082
4083 {
4084
4085 if
4086 (UNIVERSAL::isa ($other,
4087 'Message::Util::IF::NodeRef'
4088 )
4089 and $other->{
4090 'node'
4091 }->{
4092 'nid'
4093 }
4094 eq $self->{
4095 'node'
4096 }->{
4097 'nid'
4098 }) {
4099 $r =
4100 1
4101 ;
4102 }
4103
4104
4105 }
4106 $r}
4107 sub _new_object ($$) {
4108 my ($self, $refClass) = @_;
4109 my $r;
4110
4111 {
4112
4113 my
4114 $node =
4115 $r =
4116 Message::Util::ManakaiNode::ManakaiNodeStem->_new
4117
4118 ($refClass);
4119 $node->{
4120 'swcn'
4121 } = [];
4122
4123
4124 }
4125 $r}
4126 sub node_id ($;$) {
4127 if (@_ == 1) {my ($self) = @_;
4128 my $r = '';
4129
4130 {
4131
4132
4133 $r = $self->{
4134 'node'
4135 }->{
4136 'nid'
4137 };
4138
4139
4140 }
4141 $r;
4142 } else {my ($self) = @_;
4143 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'node_id';
4144 }
4145 }
4146 sub node_id_ref ($;$) {
4147 if (@_ == 1) {my ($self) = @_;
4148 my $r;
4149
4150 {
4151
4152
4153 $r = \($self->{
4154 'node'
4155 }->{
4156 'nid'
4157 });
4158
4159
4160 }
4161 $r;
4162 } else {my ($self) = @_;
4163 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'node_id_ref';
4164 }
4165 }
4166 use overload
4167 bool => sub () {1},
4168 '""' => 'stringify',
4169 'eq' => 'is_same_node',
4170 fallback => 1;
4171 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core',
4172 {'',
4173 '1',
4174 '2.1',
4175 '1'}};
4176 $Message::DOM::ClassPoint{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode>} = 2.1;
4177 $Message::Util::ManakaiNode::ManakaiNodeRef::Prop{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode>} = {'o',
4178 ['p'],
4179 's',
4180 ['swcn']};
4181 package Message::Markup::IF::SWCFGComment;
4182 our $VERSION = 20061105.0240;
4183 package Message::Markup::SuikaWikiConfig21::ManakaiSWCFGComment;
4184 our $VERSION = 20061105.0240;
4185 push our @ISA, 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode',
4186 'Message::Markup::IF::SWCFGComment';
4187 sub node_type ($;$) {
4188 if (@_ == 1) {my ($self) = @_;
4189 my $r = '';
4190 $r = '#comment';
4191 $r;
4192 } else {my ($self) = @_;
4193 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGComment', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'node_type';
4194 }
4195 }
4196 sub _new_object ($) {
4197 my ($self) = @_;
4198 my $r;
4199
4200 {
4201
4202
4203 $r =
4204 Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode->_new_object
4205 ($self);
4206 $r->{
4207 'swnt'
4208 } = '#comment';
4209 $r->{
4210 'swval'
4211 } = '';
4212 $r->{
4213 'nsx'
4214 } =
4215 1
4216 ; ## Always t r u e
4217 $r->{
4218 'etx'
4219 } =
4220 1
4221 ; ## Always t r u e
4222
4223
4224 }
4225 $r}
4226 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGComment>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core',
4227 {'',
4228 '1',
4229 '2.1',
4230 '1'}};
4231 $Message::DOM::ClassPoint{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGComment>} = 2.1;
4232 $Message::Util::ManakaiNode::ManakaiNodeRef::Prop{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGComment>} = {'o',
4233 ['p'],
4234 's',
4235 ['swcn']};
4236 package Message::Markup::IF::SWCFGElement;
4237 our $VERSION = 20061105.0240;
4238 package Message::Markup::SuikaWikiConfig21::ManakaiSWCFGElement;
4239 our $VERSION = 20061105.0240;
4240 push our @ISA, 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode',
4241 'Message::Markup::IF::SWCFGElement';
4242 sub expanded_uri ($;$) {
4243 if (@_ == 1) {my ($self) = @_;
4244 my $r = '';
4245
4246 {
4247
4248
4249 {
4250
4251 my
4252 $__node = $self->{
4253 'node'
4254 };
4255
4256
4257 {
4258
4259 unless
4260 ($__node->{
4261 'etx'
4262 }) {
4263
4264
4265 {
4266
4267 local $Error::Depth = $Error::Depth + 1;
4268
4269 {
4270
4271
4272 my
4273 $__qn;
4274 if ($__node->{
4275 'nsx'
4276 }) {
4277 $__qn = $self->
4278 _get_node_reference
4279 ($__node)
4280 ->
4281 real_qualified_name
4282 ;
4283 } else {
4284 $__qn = $__node->{
4285 'swln'
4286 };
4287
4288 }
4289 my $__od = $__node->{
4290 'swod'
4291 };
4292 if ($__od->{
4293 'swetb'
4294 }->{$__qn}) {
4295 my $b = $__od->{
4296 'swetb'
4297 }->{$__qn};
4298 $__node->{
4299 'swns'
4300 } =
4301 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
4302 ;
4303 if ($__node->{
4304 'nsx'
4305 }) {
4306 $__node->{
4307 'swln'
4308 } = $__qn;
4309 } else {
4310 $__node->{
4311 'nsx'
4312 } =
4313 1
4314 ;
4315 }
4316 unless ($b->{namespaceExpanded}) {
4317 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
4318 my $__prefix = $1;
4319 $b->{shadowNamespaceURI}
4320 = $self->
4321 _get_node_reference
4322 ($__od)
4323 ->
4324 lookup_namespace_uri
4325
4326 ($__prefix, make_new_binding =>
4327 0
4328 ,
4329 raise_prefix_exception =>
4330 1
4331 );
4332 }
4333 $b->{namespaceExpanded} =
4334 1
4335 ;
4336 }
4337 $__node->{
4338 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
4339 } = $b->{shadowNamespaceURI};
4340 $__node->{
4341 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
4342 } = $b->{shadowLocalName};
4343 for my $__p (qw/shadowContent shadowSibling/) {
4344 next unless $b->{$__p};
4345 my $cl = $self->
4346 _get_node_reference
4347 ($b->{$__p})
4348 ->clone;
4349 my $__n = $__node->{{shadowContent =>
4350 'shadow'
4351 ,
4352 shadowSibling =>
4353 'shadowsib'
4354 }->{$__p}}
4355 = $cl->{
4356 'node'
4357 };
4358 $__node->
4359 _import_tree
4360 ($__n);
4361 $__n->{{shadowContent =>
4362 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
4363 ,
4364 shadowSibling =>
4365 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
4366 }->{$__p}} = $__node;
4367 }
4368 }
4369 $__node->{
4370 'etx'
4371 } =
4372 1
4373 ;
4374
4375
4376
4377 }
4378
4379
4380 ;}
4381
4382 ;
4383 }
4384
4385
4386 }
4387
4388 ;
4389 unless ($__node->{
4390 'nsx'
4391 }) {
4392 if ($__node->{
4393 'swln'
4394 } =~ s/^([^:]*)://) {
4395 my $__prefix = $1;
4396
4397
4398 {
4399
4400 local $Error::Depth = $Error::Depth + 1;
4401
4402 {
4403
4404
4405
4406 $__node->{
4407 'swns'
4408 }
4409 = $self->
4410 lookup_namespace_uri
4411
4412 ($__prefix, make_new_binding =>
4413 0
4414 ,
4415 raise_prefix_exception =>
4416 1
4417 );
4418
4419
4420
4421 }
4422
4423
4424 ;}
4425
4426 ;
4427 } else {
4428 $__node->{
4429 'swns'
4430 }
4431 = $__node->{
4432 'swod'
4433 }
4434 ->{
4435 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#defaultETNamespaceURI'
4436 };
4437 }
4438 $__node->{
4439 'nsx'
4440 } =
4441 1
4442 ;
4443 }
4444
4445
4446 }
4447
4448 ;
4449 if (defined $self->{
4450 'node'
4451 }->{
4452 'swns'
4453 }) {
4454 if ($self->{
4455 'node'
4456 }
4457 ->{
4458 'swns'
4459 } eq
4460 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
4461 ) {
4462 $r = $self->{
4463 'node'
4464 }->{
4465 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
4466 } .
4467 $self->{
4468 'node'
4469 }->{
4470 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
4471 };
4472 } else {
4473 $r = $self->{
4474 'node'
4475 }->{
4476 'swns'
4477 } .
4478 $self->{
4479 'node'
4480 }->{
4481 'swln'
4482 };
4483 }
4484 } else {
4485 $r = $self->{
4486 'node'
4487 }->{
4488 'swln'
4489 };
4490 }
4491
4492
4493 }
4494 $r;
4495 } else {my ($self) = @_;
4496 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGElement', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'expanded_uri';
4497 }
4498 }
4499 sub prefix ($;$) {
4500 if (@_ == 1) {my ($self) = @_;
4501 my $r = '';
4502
4503 {
4504
4505
4506 {
4507
4508 my
4509 $__node = $self->{
4510 'node'
4511 };
4512
4513
4514 {
4515
4516 unless
4517 ($__node->{
4518 'etx'
4519 }) {
4520
4521
4522 {
4523
4524 local $Error::Depth = $Error::Depth + 1;
4525
4526 {
4527
4528
4529 my
4530 $__qn;
4531 if ($__node->{
4532 'nsx'
4533 }) {
4534 $__qn = $self->
4535 _get_node_reference
4536 ($__node)
4537 ->
4538 real_qualified_name
4539 ;
4540 } else {
4541 $__qn = $__node->{
4542 'swln'
4543 };
4544
4545 }
4546 my $__od = $__node->{
4547 'swod'
4548 };
4549 if ($__od->{
4550 'swetb'
4551 }->{$__qn}) {
4552 my $b = $__od->{
4553 'swetb'
4554 }->{$__qn};
4555 $__node->{
4556 'swns'
4557 } =
4558 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
4559 ;
4560 if ($__node->{
4561 'nsx'
4562 }) {
4563 $__node->{
4564 'swln'
4565 } = $__qn;
4566 } else {
4567 $__node->{
4568 'nsx'
4569 } =
4570 1
4571 ;
4572 }
4573 unless ($b->{namespaceExpanded}) {
4574 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
4575 my $__prefix = $1;
4576 $b->{shadowNamespaceURI}
4577 = $self->
4578 _get_node_reference
4579 ($__od)
4580 ->
4581 lookup_namespace_uri
4582
4583 ($__prefix, make_new_binding =>
4584 0
4585 ,
4586 raise_prefix_exception =>
4587 1
4588 );
4589 }
4590 $b->{namespaceExpanded} =
4591 1
4592 ;
4593 }
4594 $__node->{
4595 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
4596 } = $b->{shadowNamespaceURI};
4597 $__node->{
4598 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
4599 } = $b->{shadowLocalName};
4600 for my $__p (qw/shadowContent shadowSibling/) {
4601 next unless $b->{$__p};
4602 my $cl = $self->
4603 _get_node_reference
4604 ($b->{$__p})
4605 ->clone;
4606 my $__n = $__node->{{shadowContent =>
4607 'shadow'
4608 ,
4609 shadowSibling =>
4610 'shadowsib'
4611 }->{$__p}}
4612 = $cl->{
4613 'node'
4614 };
4615 $__node->
4616 _import_tree
4617 ($__n);
4618 $__n->{{shadowContent =>
4619 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
4620 ,
4621 shadowSibling =>
4622 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
4623 }->{$__p}} = $__node;
4624 }
4625 }
4626 $__node->{
4627 'etx'
4628 } =
4629 1
4630 ;
4631
4632
4633
4634 }
4635
4636
4637 ;}
4638
4639 ;
4640 }
4641
4642
4643 }
4644
4645 ;
4646 unless ($__node->{
4647 'nsx'
4648 }) {
4649 if ($__node->{
4650 'swln'
4651 } =~ s/^([^:]*)://) {
4652 my $__prefix = $1;
4653
4654
4655 {
4656
4657 local $Error::Depth = $Error::Depth + 1;
4658
4659 {
4660
4661
4662
4663 $__node->{
4664 'swns'
4665 }
4666 = $self->
4667 lookup_namespace_uri
4668
4669 ($__prefix, make_new_binding =>
4670 0
4671 ,
4672 raise_prefix_exception =>
4673 1
4674 );
4675
4676
4677
4678 }
4679
4680
4681 ;}
4682
4683 ;
4684 } else {
4685 $__node->{
4686 'swns'
4687 }
4688 = $__node->{
4689 'swod'
4690 }
4691 ->{
4692 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#defaultETNamespaceURI'
4693 };
4694 }
4695 $__node->{
4696 'nsx'
4697 } =
4698 1
4699 ;
4700 }
4701
4702
4703 }
4704
4705 ;
4706 my $node = $self->{
4707 'node'
4708 };
4709 my $od = $self->
4710 owner_document
4711 ;
4712 my $defURI = $od->
4713 default_element_type_namespace_uri
4714 ;
4715 if (defined $node->{
4716 'swns'
4717 }) {
4718 if (not defined $defURI or
4719 $node->{
4720 'swns'
4721 } ne $defURI or
4722 $node->{
4723 'swln'
4724 } eq 'Namespace' or
4725 $node->{
4726 'swln'
4727 } eq 'ElementTypeBinding' or
4728 $node->{
4729 'swln'
4730 } =~ /:/) {
4731 $r = $self->
4732 lookup_namespace_prefix
4733
4734 ($node->{
4735 'swns'
4736 },
4737 make_new_binding => 1);
4738 } else {
4739 $r =
4740 undef
4741 ;
4742 }
4743 } else { ## Null namespace
4744 if (defined $defURI or $node->{
4745 'swln'
4746 } =~ /:/ or
4747 $node->{
4748 'swln'
4749 } eq 'Namespace' or
4750 $node->{
4751 'swln'
4752 } eq 'ElementTypeBinding') {
4753 $r = $self->
4754 lookup_namespace_prefix
4755
4756 ($node->{
4757 'swns'
4758 },
4759 make_new_binding => 1);
4760 } else {
4761 $r =
4762 undef
4763 ;
4764 }
4765 }
4766
4767
4768 }
4769 $r;
4770 } else {my ($self) = @_;
4771 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGElement', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'prefix';
4772 }
4773 }
4774 sub qualified_name ($;$) {
4775 if (@_ == 1) {my ($self) = @_;
4776 my $r = '';
4777
4778 {
4779
4780
4781 {
4782
4783 my
4784 $__node = $self->{
4785 'node'
4786 };
4787
4788
4789 {
4790
4791 unless
4792 ($__node->{
4793 'etx'
4794 }) {
4795
4796
4797 {
4798
4799 local $Error::Depth = $Error::Depth + 1;
4800
4801 {
4802
4803
4804 my
4805 $__qn;
4806 if ($__node->{
4807 'nsx'
4808 }) {
4809 $__qn = $self->
4810 _get_node_reference
4811 ($__node)
4812 ->
4813 real_qualified_name
4814 ;
4815 } else {
4816 $__qn = $__node->{
4817 'swln'
4818 };
4819
4820 }
4821 my $__od = $__node->{
4822 'swod'
4823 };
4824 if ($__od->{
4825 'swetb'
4826 }->{$__qn}) {
4827 my $b = $__od->{
4828 'swetb'
4829 }->{$__qn};
4830 $__node->{
4831 'swns'
4832 } =
4833 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
4834 ;
4835 if ($__node->{
4836 'nsx'
4837 }) {
4838 $__node->{
4839 'swln'
4840 } = $__qn;
4841 } else {
4842 $__node->{
4843 'nsx'
4844 } =
4845 1
4846 ;
4847 }
4848 unless ($b->{namespaceExpanded}) {
4849 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
4850 my $__prefix = $1;
4851 $b->{shadowNamespaceURI}
4852 = $self->
4853 _get_node_reference
4854 ($__od)
4855 ->
4856 lookup_namespace_uri
4857
4858 ($__prefix, make_new_binding =>
4859 0
4860 ,
4861 raise_prefix_exception =>
4862 1
4863 );
4864 }
4865 $b->{namespaceExpanded} =
4866 1
4867 ;
4868 }
4869 $__node->{
4870 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
4871 } = $b->{shadowNamespaceURI};
4872 $__node->{
4873 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
4874 } = $b->{shadowLocalName};
4875 for my $__p (qw/shadowContent shadowSibling/) {
4876 next unless $b->{$__p};
4877 my $cl = $self->
4878 _get_node_reference
4879 ($b->{$__p})
4880 ->clone;
4881 my $__n = $__node->{{shadowContent =>
4882 'shadow'
4883 ,
4884 shadowSibling =>
4885 'shadowsib'
4886 }->{$__p}}
4887 = $cl->{
4888 'node'
4889 };
4890 $__node->
4891 _import_tree
4892 ($__n);
4893 $__n->{{shadowContent =>
4894 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
4895 ,
4896 shadowSibling =>
4897 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
4898 }->{$__p}} = $__node;
4899 }
4900 }
4901 $__node->{
4902 'etx'
4903 } =
4904 1
4905 ;
4906
4907
4908
4909 }
4910
4911
4912 ;}
4913
4914 ;
4915 }
4916
4917
4918 }
4919
4920 ;
4921 unless ($__node->{
4922 'nsx'
4923 }) {
4924 if ($__node->{
4925 'swln'
4926 } =~ s/^([^:]*)://) {
4927 my $__prefix = $1;
4928
4929
4930 {
4931
4932 local $Error::Depth = $Error::Depth + 1;
4933
4934 {
4935
4936
4937
4938 $__node->{
4939 'swns'
4940 }
4941 = $self->
4942 lookup_namespace_uri
4943
4944 ($__prefix, make_new_binding =>
4945 0
4946 ,
4947 raise_prefix_exception =>
4948 1
4949 );
4950
4951
4952
4953 }
4954
4955
4956 ;}
4957
4958 ;
4959 } else {
4960 $__node->{
4961 'swns'
4962 }
4963 = $__node->{
4964 'swod'
4965 }
4966 ->{
4967 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#defaultETNamespaceURI'
4968 };
4969 }
4970 $__node->{
4971 'nsx'
4972 } =
4973 1
4974 ;
4975 }
4976
4977
4978 }
4979
4980 ;
4981 my $node = $self->{
4982 'node'
4983 };
4984 my $od = $self->
4985 owner_document
4986 ;
4987 my $defURI = $od->
4988 default_element_type_namespace_uri
4989 ;
4990 if (defined $node->{
4991 'swns'
4992 }) {
4993 my $nsURI = ($node->{
4994 'swns'
4995 } eq
4996 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
4997
4998 ? $node->{
4999 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
5000 }
5001 : $node->{
5002 'swns'
5003 });
5004 my $ln = ($node->{
5005 'swns'
5006 } eq
5007 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
5008
5009 ? $node->{
5010 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
5011 }
5012 : $node->{
5013 'swln'
5014 });
5015 if (not defined $defURI or
5016 $nsURI ne $defURI or
5017 $ln eq 'Namespace' or
5018 $ln eq 'ElementTypeBinding' or
5019 $ln =~ /:/) {
5020 $r = $self->
5021 lookup_namespace_prefix
5022
5023 ($node->{
5024 'swns'
5025 },
5026 make_new_binding => 1) .
5027 ':' . $ln;
5028 } else {
5029 $r = $ln;
5030 }
5031 } else { ## Null namespace
5032 if (defined $defURI or $node->{
5033 'swln'
5034 } =~ /:/ or
5035 $node->{
5036 'swln'
5037 } eq 'Namespace' or
5038 $node->{
5039 'swln'
5040 } eq 'ElementTypeBinding') {
5041 $r = $self->
5042 lookup_namespace_prefix
5043
5044 ($node->{
5045 'swns'
5046 },
5047 make_new_binding => 1) .
5048 ':' . $node->{
5049 'swln'
5050 };
5051 } else {
5052 $r = $node->{
5053 'swln'
5054 };
5055 }
5056 }
5057
5058
5059 }
5060 $r;
5061 } else {my ($self) = @_;
5062 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGElement', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'qualified_name';
5063 }
5064 }
5065 sub real_qualified_name ($;$) {
5066 if (@_ == 1) {my ($self) = @_;
5067 my $r = '';
5068
5069 {
5070
5071
5072 {
5073
5074 my
5075 $__node = $self->{
5076 'node'
5077 };
5078
5079
5080 {
5081
5082 unless
5083 ($__node->{
5084 'etx'
5085 }) {
5086
5087
5088 {
5089
5090 local $Error::Depth = $Error::Depth + 1;
5091
5092 {
5093
5094
5095 my
5096 $__qn;
5097 if ($__node->{
5098 'nsx'
5099 }) {
5100 $__qn = $self->
5101 _get_node_reference
5102 ($__node)
5103 ->
5104 real_qualified_name
5105 ;
5106 } else {
5107 $__qn = $__node->{
5108 'swln'
5109 };
5110
5111 }
5112 my $__od = $__node->{
5113 'swod'
5114 };
5115 if ($__od->{
5116 'swetb'
5117 }->{$__qn}) {
5118 my $b = $__od->{
5119 'swetb'
5120 }->{$__qn};
5121 $__node->{
5122 'swns'
5123 } =
5124 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
5125 ;
5126 if ($__node->{
5127 'nsx'
5128 }) {
5129 $__node->{
5130 'swln'
5131 } = $__qn;
5132 } else {
5133 $__node->{
5134 'nsx'
5135 } =
5136 1
5137 ;
5138 }
5139 unless ($b->{namespaceExpanded}) {
5140 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
5141 my $__prefix = $1;
5142 $b->{shadowNamespaceURI}
5143 = $self->
5144 _get_node_reference
5145 ($__od)
5146 ->
5147 lookup_namespace_uri
5148
5149 ($__prefix, make_new_binding =>
5150 0
5151 ,
5152 raise_prefix_exception =>
5153 1
5154 );
5155 }
5156 $b->{namespaceExpanded} =
5157 1
5158 ;
5159 }
5160 $__node->{
5161 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
5162 } = $b->{shadowNamespaceURI};
5163 $__node->{
5164 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
5165 } = $b->{shadowLocalName};
5166 for my $__p (qw/shadowContent shadowSibling/) {
5167 next unless $b->{$__p};
5168 my $cl = $self->
5169 _get_node_reference
5170 ($b->{$__p})
5171 ->clone;
5172 my $__n = $__node->{{shadowContent =>
5173 'shadow'
5174 ,
5175 shadowSibling =>
5176 'shadowsib'
5177 }->{$__p}}
5178 = $cl->{
5179 'node'
5180 };
5181 $__node->
5182 _import_tree
5183 ($__n);
5184 $__n->{{shadowContent =>
5185 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
5186 ,
5187 shadowSibling =>
5188 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
5189 }->{$__p}} = $__node;
5190 }
5191 }
5192 $__node->{
5193 'etx'
5194 } =
5195 1
5196 ;
5197
5198
5199
5200 }
5201
5202
5203 ;}
5204
5205 ;
5206 }
5207
5208
5209 }
5210
5211 ;
5212 unless ($__node->{
5213 'nsx'
5214 }) {
5215 if ($__node->{
5216 'swln'
5217 } =~ s/^([^:]*)://) {
5218 my $__prefix = $1;
5219
5220
5221 {
5222
5223 local $Error::Depth = $Error::Depth + 1;
5224
5225 {
5226
5227
5228
5229 $__node->{
5230 'swns'
5231 }
5232 = $self->
5233 lookup_namespace_uri
5234
5235 ($__prefix, make_new_binding =>
5236 0
5237 ,
5238 raise_prefix_exception =>
5239 1
5240 );
5241
5242
5243
5244 }
5245
5246
5247 ;}
5248
5249 ;
5250 } else {
5251 $__node->{
5252 'swns'
5253 }
5254 = $__node->{
5255 'swod'
5256 }
5257 ->{
5258 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#defaultETNamespaceURI'
5259 };
5260 }
5261 $__node->{
5262 'nsx'
5263 } =
5264 1
5265 ;
5266 }
5267
5268
5269 }
5270
5271 ;
5272 my $node = $self->{
5273 'node'
5274 };
5275 my $od = $self->
5276 owner_document
5277 ;
5278 my $defURI = $od->
5279 default_element_type_namespace_uri
5280 ;
5281 if (defined $node->{
5282 'swns'
5283 }) {
5284 if ($node->{
5285 'swns'
5286 } eq
5287 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
5288 ) {
5289 $r = $node->{
5290 'swln'
5291 };
5292 } elsif (not defined $defURI or
5293 $node->{
5294 'swns'
5295 } ne $defURI or
5296 $node->{
5297 'swln'
5298 } eq 'Namespace' or
5299 $node->{
5300 'swln'
5301 } eq 'ElementTypeBinding' or
5302 $node->{
5303 'swln'
5304 } =~ /:/) {
5305 $r = $self->
5306 lookup_namespace_prefix
5307
5308 ($node->{
5309 'swns'
5310 },
5311 make_new_binding => 1) .
5312 ':' . $node->{
5313 'swln'
5314 };
5315 } else {
5316 $r = $node->{
5317 'swln'
5318 };
5319 }
5320 } else { ## Null namespace
5321 if (defined $defURI or $node->{
5322 'swln'
5323 } =~ /:/ or
5324 $node->{
5325 'swln'
5326 } eq 'Namespace' or
5327 $node->{
5328 'swln'
5329 } eq 'ElementTypeBinding') {
5330 $r = $self->
5331 lookup_namespace_prefix
5332
5333 ($node->{
5334 'swns'
5335 },
5336 make_new_binding => 1) .
5337 ':' . $node->{
5338 'swln'
5339 };
5340 } else {
5341 $r = $node->{
5342 'swln'
5343 };
5344 }
5345 }
5346
5347
5348 }
5349 $r;
5350 } else {my ($self) = @_;
5351 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGElement', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'real_qualified_name';
5352 }
5353 }
5354 sub node_type ($;$) {
5355 if (@_ == 1) {my ($self) = @_;
5356 my $r = '';
5357 $r = '#element';
5358 $r;
5359 } else {my ($self) = @_;
5360 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGElement', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'node_type';
5361 }
5362 }
5363 sub local_name ($;$) {
5364 if (@_ == 1) {my ($self) = @_;
5365 my $r = '';
5366
5367 {
5368
5369
5370 {
5371
5372 my
5373 $__node = $self->{
5374 'node'
5375 };
5376
5377
5378 {
5379
5380 unless
5381 ($__node->{
5382 'etx'
5383 }) {
5384
5385
5386 {
5387
5388 local $Error::Depth = $Error::Depth + 1;
5389
5390 {
5391
5392
5393 my
5394 $__qn;
5395 if ($__node->{
5396 'nsx'
5397 }) {
5398 $__qn = $self->
5399 _get_node_reference
5400 ($__node)
5401 ->
5402 real_qualified_name
5403 ;
5404 } else {
5405 $__qn = $__node->{
5406 'swln'
5407 };
5408
5409 }
5410 my $__od = $__node->{
5411 'swod'
5412 };
5413 if ($__od->{
5414 'swetb'
5415 }->{$__qn}) {
5416 my $b = $__od->{
5417 'swetb'
5418 }->{$__qn};
5419 $__node->{
5420 'swns'
5421 } =
5422 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
5423 ;
5424 if ($__node->{
5425 'nsx'
5426 }) {
5427 $__node->{
5428 'swln'
5429 } = $__qn;
5430 } else {
5431 $__node->{
5432 'nsx'
5433 } =
5434 1
5435 ;
5436 }
5437 unless ($b->{namespaceExpanded}) {
5438 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
5439 my $__prefix = $1;
5440 $b->{shadowNamespaceURI}
5441 = $self->
5442 _get_node_reference
5443 ($__od)
5444 ->
5445 lookup_namespace_uri
5446
5447 ($__prefix, make_new_binding =>
5448 0
5449 ,
5450 raise_prefix_exception =>
5451 1
5452 );
5453 }
5454 $b->{namespaceExpanded} =
5455 1
5456 ;
5457 }
5458 $__node->{
5459 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
5460 } = $b->{shadowNamespaceURI};
5461 $__node->{
5462 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
5463 } = $b->{shadowLocalName};
5464 for my $__p (qw/shadowContent shadowSibling/) {
5465 next unless $b->{$__p};
5466 my $cl = $self->
5467 _get_node_reference
5468 ($b->{$__p})
5469 ->clone;
5470 my $__n = $__node->{{shadowContent =>
5471 'shadow'
5472 ,
5473 shadowSibling =>
5474 'shadowsib'
5475 }->{$__p}}
5476 = $cl->{
5477 'node'
5478 };
5479 $__node->
5480 _import_tree
5481 ($__n);
5482 $__n->{{shadowContent =>
5483 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
5484 ,
5485 shadowSibling =>
5486 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
5487 }->{$__p}} = $__node;
5488 }
5489 }
5490 $__node->{
5491 'etx'
5492 } =
5493 1
5494 ;
5495
5496
5497
5498 }
5499
5500
5501 ;}
5502
5503 ;
5504 }
5505
5506
5507 }
5508
5509 ;
5510 unless ($__node->{
5511 'nsx'
5512 }) {
5513 if ($__node->{
5514 'swln'
5515 } =~ s/^([^:]*)://) {
5516 my $__prefix = $1;
5517
5518
5519 {
5520
5521 local $Error::Depth = $Error::Depth + 1;
5522
5523 {
5524
5525
5526
5527 $__node->{
5528 'swns'
5529 }
5530 = $self->
5531 lookup_namespace_uri
5532
5533 ($__prefix, make_new_binding =>
5534 0
5535 ,
5536 raise_prefix_exception =>
5537 1
5538 );
5539
5540
5541
5542 }
5543
5544
5545 ;}
5546
5547 ;
5548 } else {
5549 $__node->{
5550 'swns'
5551 }
5552 = $__node->{
5553 'swod'
5554 }
5555 ->{
5556 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#defaultETNamespaceURI'
5557 };
5558 }
5559 $__node->{
5560 'nsx'
5561 } =
5562 1
5563 ;
5564 }
5565
5566
5567 }
5568
5569 ;
5570 $r = (defined $self->{
5571 'node'
5572 }->{
5573 'swns'
5574 } and
5575 $self->{
5576 'node'
5577 }->{
5578 'swns'
5579 } eq
5580 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
5581 )
5582 ? $self->{
5583 'node'
5584 }->{
5585 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
5586 }
5587 : $self->{
5588 'node'
5589 }->{
5590 'swln'
5591 };
5592
5593
5594 }
5595 $r;
5596 } else {my ($self, $given) = @_;
5597
5598 {
5599
5600
5601 {
5602
5603 my
5604 $__node = $self->{
5605 'node'
5606 };
5607
5608
5609 {
5610
5611 unless
5612 ($__node->{
5613 'etx'
5614 }) {
5615
5616
5617 {
5618
5619 local $Error::Depth = $Error::Depth + 1;
5620
5621 {
5622
5623
5624 my
5625 $__qn;
5626 if ($__node->{
5627 'nsx'
5628 }) {
5629 $__qn = $self->
5630 _get_node_reference
5631 ($__node)
5632 ->
5633 real_qualified_name
5634 ;
5635 } else {
5636 $__qn = $__node->{
5637 'swln'
5638 };
5639
5640 }
5641 my $__od = $__node->{
5642 'swod'
5643 };
5644 if ($__od->{
5645 'swetb'
5646 }->{$__qn}) {
5647 my $b = $__od->{
5648 'swetb'
5649 }->{$__qn};
5650 $__node->{
5651 'swns'
5652 } =
5653 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
5654 ;
5655 if ($__node->{
5656 'nsx'
5657 }) {
5658 $__node->{
5659 'swln'
5660 } = $__qn;
5661 } else {
5662 $__node->{
5663 'nsx'
5664 } =
5665 1
5666 ;
5667 }
5668 unless ($b->{namespaceExpanded}) {
5669 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
5670 my $__prefix = $1;
5671 $b->{shadowNamespaceURI}
5672 = $self->
5673 _get_node_reference
5674 ($__od)
5675 ->
5676 lookup_namespace_uri
5677
5678 ($__prefix, make_new_binding =>
5679 0
5680 ,
5681 raise_prefix_exception =>
5682 1
5683 );
5684 }
5685 $b->{namespaceExpanded} =
5686 1
5687 ;
5688 }
5689 $__node->{
5690 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
5691 } = $b->{shadowNamespaceURI};
5692 $__node->{
5693 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
5694 } = $b->{shadowLocalName};
5695 for my $__p (qw/shadowContent shadowSibling/) {
5696 next unless $b->{$__p};
5697 my $cl = $self->
5698 _get_node_reference
5699 ($b->{$__p})
5700 ->clone;
5701 my $__n = $__node->{{shadowContent =>
5702 'shadow'
5703 ,
5704 shadowSibling =>
5705 'shadowsib'
5706 }->{$__p}}
5707 = $cl->{
5708 'node'
5709 };
5710 $__node->
5711 _import_tree
5712 ($__n);
5713 $__n->{{shadowContent =>
5714 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
5715 ,
5716 shadowSibling =>
5717 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
5718 }->{$__p}} = $__node;
5719 }
5720 }
5721 $__node->{
5722 'etx'
5723 } =
5724 1
5725 ;
5726
5727
5728
5729 }
5730
5731
5732 ;}
5733
5734 ;
5735 }
5736
5737
5738 }
5739
5740 ;
5741 unless ($__node->{
5742 'nsx'
5743 }) {
5744 if ($__node->{
5745 'swln'
5746 } =~ s/^([^:]*)://) {
5747 my $__prefix = $1;
5748
5749
5750 {
5751
5752 local $Error::Depth = $Error::Depth + 1;
5753
5754 {
5755
5756
5757
5758 $__node->{
5759 'swns'
5760 }
5761 = $self->
5762 lookup_namespace_uri
5763
5764 ($__prefix, make_new_binding =>
5765 0
5766 ,
5767 raise_prefix_exception =>
5768 1
5769 );
5770
5771
5772
5773 }
5774
5775
5776 ;}
5777
5778 ;
5779 } else {
5780 $__node->{
5781 'swns'
5782 }
5783 = $__node->{
5784 'swod'
5785 }
5786 ->{
5787 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#defaultETNamespaceURI'
5788 };
5789 }
5790 $__node->{
5791 'nsx'
5792 } =
5793 1
5794 ;
5795 }
5796
5797
5798 }
5799
5800 ;
5801 if (defined $self->{
5802 'node'
5803 }->{
5804 'swns'
5805 } and
5806 $self->{
5807 'node'
5808 }->{
5809 'swns'
5810 } eq
5811 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
5812 ) {
5813 $self->{
5814 'node'
5815 }->{
5816 'swns'
5817 }
5818 = $self->{
5819 'node'
5820 }->{
5821 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
5822 };
5823 }
5824 $self->{
5825 'node'
5826 }->{
5827 'swln'
5828 } = $given;
5829
5830
5831 }
5832 }
5833 }
5834 sub real_local_name ($;$) {
5835 if (@_ == 1) {my ($self) = @_;
5836 my $r = '';
5837
5838 {
5839
5840
5841 {
5842
5843 my
5844 $__node = $self->{
5845 'node'
5846 };
5847
5848
5849 {
5850
5851 unless
5852 ($__node->{
5853 'etx'
5854 }) {
5855
5856
5857 {
5858
5859 local $Error::Depth = $Error::Depth + 1;
5860
5861 {
5862
5863
5864 my
5865 $__qn;
5866 if ($__node->{
5867 'nsx'
5868 }) {
5869 $__qn = $self->
5870 _get_node_reference
5871 ($__node)
5872 ->
5873 real_qualified_name
5874 ;
5875 } else {
5876 $__qn = $__node->{
5877 'swln'
5878 };
5879
5880 }
5881 my $__od = $__node->{
5882 'swod'
5883 };
5884 if ($__od->{
5885 'swetb'
5886 }->{$__qn}) {
5887 my $b = $__od->{
5888 'swetb'
5889 }->{$__qn};
5890 $__node->{
5891 'swns'
5892 } =
5893 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
5894 ;
5895 if ($__node->{
5896 'nsx'
5897 }) {
5898 $__node->{
5899 'swln'
5900 } = $__qn;
5901 } else {
5902 $__node->{
5903 'nsx'
5904 } =
5905 1
5906 ;
5907 }
5908 unless ($b->{namespaceExpanded}) {
5909 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
5910 my $__prefix = $1;
5911 $b->{shadowNamespaceURI}
5912 = $self->
5913 _get_node_reference
5914 ($__od)
5915 ->
5916 lookup_namespace_uri
5917
5918 ($__prefix, make_new_binding =>
5919 0
5920 ,
5921 raise_prefix_exception =>
5922 1
5923 );
5924 }
5925 $b->{namespaceExpanded} =
5926 1
5927 ;
5928 }
5929 $__node->{
5930 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
5931 } = $b->{shadowNamespaceURI};
5932 $__node->{
5933 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
5934 } = $b->{shadowLocalName};
5935 for my $__p (qw/shadowContent shadowSibling/) {
5936 next unless $b->{$__p};
5937 my $cl = $self->
5938 _get_node_reference
5939 ($b->{$__p})
5940 ->clone;
5941 my $__n = $__node->{{shadowContent =>
5942 'shadow'
5943 ,
5944 shadowSibling =>
5945 'shadowsib'
5946 }->{$__p}}
5947 = $cl->{
5948 'node'
5949 };
5950 $__node->
5951 _import_tree
5952 ($__n);
5953 $__n->{{shadowContent =>
5954 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
5955 ,
5956 shadowSibling =>
5957 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
5958 }->{$__p}} = $__node;
5959 }
5960 }
5961 $__node->{
5962 'etx'
5963 } =
5964 1
5965 ;
5966
5967
5968
5969 }
5970
5971
5972 ;}
5973
5974 ;
5975 }
5976
5977
5978 }
5979
5980 ;
5981 unless ($__node->{
5982 'nsx'
5983 }) {
5984 if ($__node->{
5985 'swln'
5986 } =~ s/^([^:]*)://) {
5987 my $__prefix = $1;
5988
5989
5990 {
5991
5992 local $Error::Depth = $Error::Depth + 1;
5993
5994 {
5995
5996
5997
5998 $__node->{
5999 'swns'
6000 }
6001 = $self->
6002 lookup_namespace_uri
6003
6004 ($__prefix, make_new_binding =>
6005 0
6006 ,
6007 raise_prefix_exception =>
6008 1
6009 );
6010
6011
6012
6013 }
6014
6015
6016 ;}
6017
6018 ;
6019 } else {
6020 $__node->{
6021 'swns'
6022 }
6023 = $__node->{
6024 'swod'
6025 }
6026 ->{
6027 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#defaultETNamespaceURI'
6028 };
6029 }
6030 $__node->{
6031 'nsx'
6032 } =
6033 1
6034 ;
6035 }
6036
6037
6038 }
6039
6040 ;
6041 $r = $self->{
6042 'node'
6043 }->{
6044 'swln'
6045 };
6046
6047
6048 }
6049 $r;
6050 } else {my ($self, $given) = @_;
6051
6052 {
6053
6054
6055 {
6056
6057 my
6058 $__node = $self->{
6059 'node'
6060 };
6061
6062
6063 {
6064
6065 unless
6066 ($__node->{
6067 'etx'
6068 }) {
6069
6070
6071 {
6072
6073 local $Error::Depth = $Error::Depth + 1;
6074
6075 {
6076
6077
6078 my
6079 $__qn;
6080 if ($__node->{
6081 'nsx'
6082 }) {
6083 $__qn = $self->
6084 _get_node_reference
6085 ($__node)
6086 ->
6087 real_qualified_name
6088 ;
6089 } else {
6090 $__qn = $__node->{
6091 'swln'
6092 };
6093
6094 }
6095 my $__od = $__node->{
6096 'swod'
6097 };
6098 if ($__od->{
6099 'swetb'
6100 }->{$__qn}) {
6101 my $b = $__od->{
6102 'swetb'
6103 }->{$__qn};
6104 $__node->{
6105 'swns'
6106 } =
6107 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
6108 ;
6109 if ($__node->{
6110 'nsx'
6111 }) {
6112 $__node->{
6113 'swln'
6114 } = $__qn;
6115 } else {
6116 $__node->{
6117 'nsx'
6118 } =
6119 1
6120 ;
6121 }
6122 unless ($b->{namespaceExpanded}) {
6123 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
6124 my $__prefix = $1;
6125 $b->{shadowNamespaceURI}
6126 = $self->
6127 _get_node_reference
6128 ($__od)
6129 ->
6130 lookup_namespace_uri
6131
6132 ($__prefix, make_new_binding =>
6133 0
6134 ,
6135 raise_prefix_exception =>
6136 1
6137 );
6138 }
6139 $b->{namespaceExpanded} =
6140 1
6141 ;
6142 }
6143 $__node->{
6144 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
6145 } = $b->{shadowNamespaceURI};
6146 $__node->{
6147 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
6148 } = $b->{shadowLocalName};
6149 for my $__p (qw/shadowContent shadowSibling/) {
6150 next unless $b->{$__p};
6151 my $cl = $self->
6152 _get_node_reference
6153 ($b->{$__p})
6154 ->clone;
6155 my $__n = $__node->{{shadowContent =>
6156 'shadow'
6157 ,
6158 shadowSibling =>
6159 'shadowsib'
6160 }->{$__p}}
6161 = $cl->{
6162 'node'
6163 };
6164 $__node->
6165 _import_tree
6166 ($__n);
6167 $__n->{{shadowContent =>
6168 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
6169 ,
6170 shadowSibling =>
6171 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
6172 }->{$__p}} = $__node;
6173 }
6174 }
6175 $__node->{
6176 'etx'
6177 } =
6178 1
6179 ;
6180
6181
6182
6183 }
6184
6185
6186 ;}
6187
6188 ;
6189 }
6190
6191
6192 }
6193
6194 ;
6195 unless ($__node->{
6196 'nsx'
6197 }) {
6198 if ($__node->{
6199 'swln'
6200 } =~ s/^([^:]*)://) {
6201 my $__prefix = $1;
6202
6203
6204 {
6205
6206 local $Error::Depth = $Error::Depth + 1;
6207
6208 {
6209
6210
6211
6212 $__node->{
6213 'swns'
6214 }
6215 = $self->
6216 lookup_namespace_uri
6217
6218 ($__prefix, make_new_binding =>
6219 0
6220 ,
6221 raise_prefix_exception =>
6222 1
6223 );
6224
6225
6226
6227 }
6228
6229
6230 ;}
6231
6232 ;
6233 } else {
6234 $__node->{
6235 'swns'
6236 }
6237 = $__node->{
6238 'swod'
6239 }
6240 ->{
6241 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#defaultETNamespaceURI'
6242 };
6243 }
6244 $__node->{
6245 'nsx'
6246 } =
6247 1
6248 ;
6249 }
6250
6251
6252 }
6253
6254 ;
6255 $self->{
6256 'node'
6257 }->{
6258 'swln'
6259 } = $given;
6260
6261
6262 }
6263 }
6264 }
6265 sub namespace_uri ($;$) {
6266 if (@_ == 1) {my ($self) = @_;
6267 my $r = '';
6268
6269 {
6270
6271
6272 {
6273
6274 my
6275 $__node = $self->{
6276 'node'
6277 };
6278
6279
6280 {
6281
6282 unless
6283 ($__node->{
6284 'etx'
6285 }) {
6286
6287
6288 {
6289
6290 local $Error::Depth = $Error::Depth + 1;
6291
6292 {
6293
6294
6295 my
6296 $__qn;
6297 if ($__node->{
6298 'nsx'
6299 }) {
6300 $__qn = $self->
6301 _get_node_reference
6302 ($__node)
6303 ->
6304 real_qualified_name
6305 ;
6306 } else {
6307 $__qn = $__node->{
6308 'swln'
6309 };
6310
6311 }
6312 my $__od = $__node->{
6313 'swod'
6314 };
6315 if ($__od->{
6316 'swetb'
6317 }->{$__qn}) {
6318 my $b = $__od->{
6319 'swetb'
6320 }->{$__qn};
6321 $__node->{
6322 'swns'
6323 } =
6324 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
6325 ;
6326 if ($__node->{
6327 'nsx'
6328 }) {
6329 $__node->{
6330 'swln'
6331 } = $__qn;
6332 } else {
6333 $__node->{
6334 'nsx'
6335 } =
6336 1
6337 ;
6338 }
6339 unless ($b->{namespaceExpanded}) {
6340 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
6341 my $__prefix = $1;
6342 $b->{shadowNamespaceURI}
6343 = $self->
6344 _get_node_reference
6345 ($__od)
6346 ->
6347 lookup_namespace_uri
6348
6349 ($__prefix, make_new_binding =>
6350 0
6351 ,
6352 raise_prefix_exception =>
6353 1
6354 );
6355 }
6356 $b->{namespaceExpanded} =
6357 1
6358 ;
6359 }
6360 $__node->{
6361 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
6362 } = $b->{shadowNamespaceURI};
6363 $__node->{
6364 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
6365 } = $b->{shadowLocalName};
6366 for my $__p (qw/shadowContent shadowSibling/) {
6367 next unless $b->{$__p};
6368 my $cl = $self->
6369 _get_node_reference
6370 ($b->{$__p})
6371 ->clone;
6372 my $__n = $__node->{{shadowContent =>
6373 'shadow'
6374 ,
6375 shadowSibling =>
6376 'shadowsib'
6377 }->{$__p}}
6378 = $cl->{
6379 'node'
6380 };
6381 $__node->
6382 _import_tree
6383 ($__n);
6384 $__n->{{shadowContent =>
6385 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
6386 ,
6387 shadowSibling =>
6388 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
6389 }->{$__p}} = $__node;
6390 }
6391 }
6392 $__node->{
6393 'etx'
6394 } =
6395 1
6396 ;
6397
6398
6399
6400 }
6401
6402
6403 ;}
6404
6405 ;
6406 }
6407
6408
6409 }
6410
6411 ;
6412 unless ($__node->{
6413 'nsx'
6414 }) {
6415 if ($__node->{
6416 'swln'
6417 } =~ s/^([^:]*)://) {
6418 my $__prefix = $1;
6419
6420
6421 {
6422
6423 local $Error::Depth = $Error::Depth + 1;
6424
6425 {
6426
6427
6428
6429 $__node->{
6430 'swns'
6431 }
6432 = $self->
6433 lookup_namespace_uri
6434
6435 ($__prefix, make_new_binding =>
6436 0
6437 ,
6438 raise_prefix_exception =>
6439 1
6440 );
6441
6442
6443
6444 }
6445
6446
6447 ;}
6448
6449 ;
6450 } else {
6451 $__node->{
6452 'swns'
6453 }
6454 = $__node->{
6455 'swod'
6456 }
6457 ->{
6458 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#defaultETNamespaceURI'
6459 };
6460 }
6461 $__node->{
6462 'nsx'
6463 } =
6464 1
6465 ;
6466 }
6467
6468
6469 }
6470
6471 ;
6472 $r = (defined $self->{
6473 'node'
6474 }->{
6475 'swns'
6476 } and
6477 $self->{
6478 'node'
6479 }->{
6480 'swns'
6481 } eq
6482 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
6483 )
6484 ? $self->{
6485 'node'
6486 }->{
6487 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
6488 }
6489 : $self->{
6490 'node'
6491 }->{
6492 'swns'
6493 };
6494
6495
6496 }
6497 $r;
6498 } else {my ($self, $given) = @_;
6499
6500 {
6501
6502 unless
6503 (defined $given and $given eq
6504 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
6505 ) {
6506
6507
6508 {
6509
6510 my
6511 $__node = $self->{
6512 'node'
6513 };
6514
6515
6516 {
6517
6518 unless
6519 ($__node->{
6520 'etx'
6521 }) {
6522
6523
6524 {
6525
6526 local $Error::Depth = $Error::Depth + 1;
6527
6528 {
6529
6530
6531 my
6532 $__qn;
6533 if ($__node->{
6534 'nsx'
6535 }) {
6536 $__qn = $self->
6537 _get_node_reference
6538 ($__node)
6539 ->
6540 real_qualified_name
6541 ;
6542 } else {
6543 $__qn = $__node->{
6544 'swln'
6545 };
6546
6547 }
6548 my $__od = $__node->{
6549 'swod'
6550 };
6551 if ($__od->{
6552 'swetb'
6553 }->{$__qn}) {
6554 my $b = $__od->{
6555 'swetb'
6556 }->{$__qn};
6557 $__node->{
6558 'swns'
6559 } =
6560 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
6561 ;
6562 if ($__node->{
6563 'nsx'
6564 }) {
6565 $__node->{
6566 'swln'
6567 } = $__qn;
6568 } else {
6569 $__node->{
6570 'nsx'
6571 } =
6572 1
6573 ;
6574 }
6575 unless ($b->{namespaceExpanded}) {
6576 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
6577 my $__prefix = $1;
6578 $b->{shadowNamespaceURI}
6579 = $self->
6580 _get_node_reference
6581 ($__od)
6582 ->
6583 lookup_namespace_uri
6584
6585 ($__prefix, make_new_binding =>
6586 0
6587 ,
6588 raise_prefix_exception =>
6589 1
6590 );
6591 }
6592 $b->{namespaceExpanded} =
6593 1
6594 ;
6595 }
6596 $__node->{
6597 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
6598 } = $b->{shadowNamespaceURI};
6599 $__node->{
6600 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
6601 } = $b->{shadowLocalName};
6602 for my $__p (qw/shadowContent shadowSibling/) {
6603 next unless $b->{$__p};
6604 my $cl = $self->
6605 _get_node_reference
6606 ($b->{$__p})
6607 ->clone;
6608 my $__n = $__node->{{shadowContent =>
6609 'shadow'
6610 ,
6611 shadowSibling =>
6612 'shadowsib'
6613 }->{$__p}}
6614 = $cl->{
6615 'node'
6616 };
6617 $__node->
6618 _import_tree
6619 ($__n);
6620 $__n->{{shadowContent =>
6621 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
6622 ,
6623 shadowSibling =>
6624 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
6625 }->{$__p}} = $__node;
6626 }
6627 }
6628 $__node->{
6629 'etx'
6630 } =
6631 1
6632 ;
6633
6634
6635
6636 }
6637
6638
6639 ;}
6640
6641 ;
6642 }
6643
6644
6645 }
6646
6647 ;
6648 unless ($__node->{
6649 'nsx'
6650 }) {
6651 if ($__node->{
6652 'swln'
6653 } =~ s/^([^:]*)://) {
6654 my $__prefix = $1;
6655
6656
6657 {
6658
6659 local $Error::Depth = $Error::Depth + 1;
6660
6661 {
6662
6663
6664
6665 $__node->{
6666 'swns'
6667 }
6668 = $self->
6669 lookup_namespace_uri
6670
6671 ($__prefix, make_new_binding =>
6672 0
6673 ,
6674 raise_prefix_exception =>
6675 1
6676 );
6677
6678
6679
6680 }
6681
6682
6683 ;}
6684
6685 ;
6686 } else {
6687 $__node->{
6688 'swns'
6689 }
6690 = $__node->{
6691 'swod'
6692 }
6693 ->{
6694 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#defaultETNamespaceURI'
6695 };
6696 }
6697 $__node->{
6698 'nsx'
6699 } =
6700 1
6701 ;
6702 }
6703
6704
6705 }
6706
6707 ;
6708 if (defined $self->{
6709 'node'
6710 }->{
6711 'swns'
6712 } and
6713 $self->{
6714 'node'
6715 }->{
6716 'swns'
6717 } eq
6718 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
6719 ) {
6720 $self->{
6721 'node'
6722 }->{
6723 'swln'
6724 }
6725 = $self->{
6726 'node'
6727 }->{
6728 'swln'
6729 };
6730 }
6731 $self->{
6732 'node'
6733 }->{
6734 'swns'
6735 } = $given;
6736 }
6737
6738
6739 }
6740 }
6741 }
6742 sub real_namespace_uri ($;$) {
6743 if (@_ == 1) {my ($self) = @_;
6744 my $r = '';
6745
6746 {
6747
6748
6749 {
6750
6751 my
6752 $__node = $self->{
6753 'node'
6754 };
6755
6756
6757 {
6758
6759 unless
6760 ($__node->{
6761 'etx'
6762 }) {
6763
6764
6765 {
6766
6767 local $Error::Depth = $Error::Depth + 1;
6768
6769 {
6770
6771
6772 my
6773 $__qn;
6774 if ($__node->{
6775 'nsx'
6776 }) {
6777 $__qn = $self->
6778 _get_node_reference
6779 ($__node)
6780 ->
6781 real_qualified_name
6782 ;
6783 } else {
6784 $__qn = $__node->{
6785 'swln'
6786 };
6787
6788 }
6789 my $__od = $__node->{
6790 'swod'
6791 };
6792 if ($__od->{
6793 'swetb'
6794 }->{$__qn}) {
6795 my $b = $__od->{
6796 'swetb'
6797 }->{$__qn};
6798 $__node->{
6799 'swns'
6800 } =
6801 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
6802 ;
6803 if ($__node->{
6804 'nsx'
6805 }) {
6806 $__node->{
6807 'swln'
6808 } = $__qn;
6809 } else {
6810 $__node->{
6811 'nsx'
6812 } =
6813 1
6814 ;
6815 }
6816 unless ($b->{namespaceExpanded}) {
6817 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
6818 my $__prefix = $1;
6819 $b->{shadowNamespaceURI}
6820 = $self->
6821 _get_node_reference
6822 ($__od)
6823 ->
6824 lookup_namespace_uri
6825
6826 ($__prefix, make_new_binding =>
6827 0
6828 ,
6829 raise_prefix_exception =>
6830 1
6831 );
6832 }
6833 $b->{namespaceExpanded} =
6834 1
6835 ;
6836 }
6837 $__node->{
6838 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
6839 } = $b->{shadowNamespaceURI};
6840 $__node->{
6841 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
6842 } = $b->{shadowLocalName};
6843 for my $__p (qw/shadowContent shadowSibling/) {
6844 next unless $b->{$__p};
6845 my $cl = $self->
6846 _get_node_reference
6847 ($b->{$__p})
6848 ->clone;
6849 my $__n = $__node->{{shadowContent =>
6850 'shadow'
6851 ,
6852 shadowSibling =>
6853 'shadowsib'
6854 }->{$__p}}
6855 = $cl->{
6856 'node'
6857 };
6858 $__node->
6859 _import_tree
6860 ($__n);
6861 $__n->{{shadowContent =>
6862 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
6863 ,
6864 shadowSibling =>
6865 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
6866 }->{$__p}} = $__node;
6867 }
6868 }
6869 $__node->{
6870 'etx'
6871 } =
6872 1
6873 ;
6874
6875
6876
6877 }
6878
6879
6880 ;}
6881
6882 ;
6883 }
6884
6885
6886 }
6887
6888 ;
6889 unless ($__node->{
6890 'nsx'
6891 }) {
6892 if ($__node->{
6893 'swln'
6894 } =~ s/^([^:]*)://) {
6895 my $__prefix = $1;
6896
6897
6898 {
6899
6900 local $Error::Depth = $Error::Depth + 1;
6901
6902 {
6903
6904
6905
6906 $__node->{
6907 'swns'
6908 }
6909 = $self->
6910 lookup_namespace_uri
6911
6912 ($__prefix, make_new_binding =>
6913 0
6914 ,
6915 raise_prefix_exception =>
6916 1
6917 );
6918
6919
6920
6921 }
6922
6923
6924 ;}
6925
6926 ;
6927 } else {
6928 $__node->{
6929 'swns'
6930 }
6931 = $__node->{
6932 'swod'
6933 }
6934 ->{
6935 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#defaultETNamespaceURI'
6936 };
6937 }
6938 $__node->{
6939 'nsx'
6940 } =
6941 1
6942 ;
6943 }
6944
6945
6946 }
6947
6948 ;
6949 $r = $self->{
6950 'node'
6951 }->{
6952 'swns'
6953 };
6954
6955
6956 }
6957 $r;
6958 } else {my ($self, $given) = @_;
6959
6960 {
6961
6962 unless
6963 (defined $given and $given eq
6964 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
6965 ) {
6966
6967
6968 {
6969
6970 my
6971 $__node = $self->{
6972 'node'
6973 };
6974
6975
6976 {
6977
6978 unless
6979 ($__node->{
6980 'etx'
6981 }) {
6982
6983
6984 {
6985
6986 local $Error::Depth = $Error::Depth + 1;
6987
6988 {
6989
6990
6991 my
6992 $__qn;
6993 if ($__node->{
6994 'nsx'
6995 }) {
6996 $__qn = $self->
6997 _get_node_reference
6998 ($__node)
6999 ->
7000 real_qualified_name
7001 ;
7002 } else {
7003 $__qn = $__node->{
7004 'swln'
7005 };
7006
7007 }
7008 my $__od = $__node->{
7009 'swod'
7010 };
7011 if ($__od->{
7012 'swetb'
7013 }->{$__qn}) {
7014 my $b = $__od->{
7015 'swetb'
7016 }->{$__qn};
7017 $__node->{
7018 'swns'
7019 } =
7020 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
7021 ;
7022 if ($__node->{
7023 'nsx'
7024 }) {
7025 $__node->{
7026 'swln'
7027 } = $__qn;
7028 } else {
7029 $__node->{
7030 'nsx'
7031 } =
7032 1
7033 ;
7034 }
7035 unless ($b->{namespaceExpanded}) {
7036 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
7037 my $__prefix = $1;
7038 $b->{shadowNamespaceURI}
7039 = $self->
7040 _get_node_reference
7041 ($__od)
7042 ->
7043 lookup_namespace_uri
7044
7045 ($__prefix, make_new_binding =>
7046 0
7047 ,
7048 raise_prefix_exception =>
7049 1
7050 );
7051 }
7052 $b->{namespaceExpanded} =
7053 1
7054 ;
7055 }
7056 $__node->{
7057 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
7058 } = $b->{shadowNamespaceURI};
7059 $__node->{
7060 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
7061 } = $b->{shadowLocalName};
7062 for my $__p (qw/shadowContent shadowSibling/) {
7063 next unless $b->{$__p};
7064 my $cl = $self->
7065 _get_node_reference
7066 ($b->{$__p})
7067 ->clone;
7068 my $__n = $__node->{{shadowContent =>
7069 'shadow'
7070 ,
7071 shadowSibling =>
7072 'shadowsib'
7073 }->{$__p}}
7074 = $cl->{
7075 'node'
7076 };
7077 $__node->
7078 _import_tree
7079 ($__n);
7080 $__n->{{shadowContent =>
7081 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
7082 ,
7083 shadowSibling =>
7084 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
7085 }->{$__p}} = $__node;
7086 }
7087 }
7088 $__node->{
7089 'etx'
7090 } =
7091 1
7092 ;
7093
7094
7095
7096 }
7097
7098
7099 ;}
7100
7101 ;
7102 }
7103
7104
7105 }
7106
7107 ;
7108 unless ($__node->{
7109 'nsx'
7110 }) {
7111 if ($__node->{
7112 'swln'
7113 } =~ s/^([^:]*)://) {
7114 my $__prefix = $1;
7115
7116
7117 {
7118
7119 local $Error::Depth = $Error::Depth + 1;
7120
7121 {
7122
7123
7124
7125 $__node->{
7126 'swns'
7127 }
7128 = $self->
7129 lookup_namespace_uri
7130
7131 ($__prefix, make_new_binding =>
7132 0
7133 ,
7134 raise_prefix_exception =>
7135 1
7136 );
7137
7138
7139
7140 }
7141
7142
7143 ;}
7144
7145 ;
7146 } else {
7147 $__node->{
7148 'swns'
7149 }
7150 = $__node->{
7151 'swod'
7152 }
7153 ->{
7154 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#defaultETNamespaceURI'
7155 };
7156 }
7157 $__node->{
7158 'nsx'
7159 } =
7160 1
7161 ;
7162 }
7163
7164
7165 }
7166
7167 ;
7168 $self->{
7169 'node'
7170 }->{
7171 'swns'
7172 } = $given;
7173 }
7174
7175
7176 }
7177 }
7178 }
7179 sub _new_object ($) {
7180 my ($self) = @_;
7181 my $r;
7182
7183 {
7184
7185
7186 $r =
7187 Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode->_new_object
7188 ($self);
7189 $r->{
7190 'swnt'
7191 } = '#element';
7192
7193
7194 }
7195 $r}
7196 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGElement>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core',
7197 {'',
7198 '1',
7199 '2.1',
7200 '1'}};
7201 $Message::DOM::ClassPoint{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGElement>} = 2.1;
7202 $Message::Util::ManakaiNode::ManakaiNodeRef::Prop{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGElement>} = {'o',
7203 ['p'],
7204 's',
7205 ['swcn'],
7206 's0',
7207 ['shadow',
7208 'shadowsib']};
7209 package Message::Markup::IF::SWCFGDocument;
7210 our $VERSION = 20061105.0240;
7211 package Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocument;
7212 our $VERSION = 20061105.0240;
7213 push our @ISA, 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode',
7214 'Message::Markup::IF::SWCFGDocument';
7215 sub create_element_ns ($$$) {
7216 my ($self, $namespaceURI, $localName) = @_;
7217 my $r;
7218
7219 {
7220
7221
7222 $r =
7223 Message::Markup::SuikaWikiConfig21::ManakaiSWCFGElement->_new_object
7224 ;
7225
7226
7227 {
7228
7229
7230 $r->{'swod'} = $self->{'node'};
7231 if (${$r->{
7232 'tid'
7233 }} ne ${$self->{'node'}->{
7234 'tid'
7235 }}) {
7236 $self->{'node'}->{
7237 'rc'
7238 }++;
7239 ${$self->{'node'}->{
7240 'grc'
7241 }}++;
7242 }
7243
7244
7245 }
7246
7247 ;
7248 $r->{
7249 'swns'
7250 } = $namespaceURI;
7251 $r->{
7252 'swln'
7253 } = $localName;
7254 $r->{
7255 'nsx'
7256 } =
7257 1
7258 ;
7259 $r->{
7260 'etx'
7261 } =
7262 1
7263 ;
7264 $r = $self->
7265 _get_node_reference
7266 ($r);
7267
7268
7269 }
7270 $r}
7271 sub create_comment ($;$) {
7272 my ($self, $data) = @_;
7273 my $r;
7274
7275 {
7276
7277
7278 $r =
7279 Message::Markup::SuikaWikiConfig21::ManakaiSWCFGComment->_new_object
7280 ;
7281
7282
7283 {
7284
7285
7286 $r->{'swod'} = $self->{'node'};
7287 if (${$r->{
7288 'tid'
7289 }} ne ${$self->{'node'}->{
7290 'tid'
7291 }}) {
7292 $self->{'node'}->{
7293 'rc'
7294 }++;
7295 ${$self->{'node'}->{
7296 'grc'
7297 }}++;
7298 }
7299
7300
7301 }
7302
7303 ;
7304 $r->{
7305 'swval'
7306 } = defined $data ? $data : '';
7307 $r = $self->
7308 _get_node_reference
7309 ($r);
7310
7311
7312 }
7313 $r}
7314 sub create_document_fragment ($) {
7315 my ($self) = @_;
7316 my $r;
7317
7318 {
7319
7320
7321 $r =
7322 Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocumentFragment->_new_object
7323 ;
7324
7325
7326 {
7327
7328
7329 $r->{'swod'} = $self->{'node'};
7330 if (${$r->{
7331 'tid'
7332 }} ne ${$self->{'node'}->{
7333 'tid'
7334 }}) {
7335 $self->{'node'}->{
7336 'rc'
7337 }++;
7338 ${$self->{'node'}->{
7339 'grc'
7340 }}++;
7341 }
7342
7343
7344 }
7345
7346 ;
7347 $r = $self->
7348 _get_node_reference
7349 ($r);
7350
7351
7352 }
7353 $r}
7354 sub default_element_type_namespace_uri ($;$) {
7355 if (@_ == 1) {my ($self) = @_;
7356 my $r = '';
7357
7358 {
7359
7360
7361 $r = $self->{
7362 'node'
7363 }->{
7364 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#defaultETNamespaceURI'
7365 };
7366
7367
7368 }
7369 $r;
7370 } else {my ($self, $given) = @_;
7371
7372 {
7373
7374
7375 $self->{
7376 'node'
7377 }->{
7378 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#defaultETNamespaceURI'
7379 } = $given;
7380
7381
7382 }
7383 }
7384 }
7385 sub implementation ($;$) {
7386 if (@_ == 1) {my ($self) = @_;
7387 my $r;
7388
7389 {
7390
7391
7392 $r = $self->{
7393 'node'
7394 }->{
7395 'impl'
7396 };
7397
7398
7399 }
7400 $r;
7401 } else {my ($self) = @_;
7402 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocument', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'implementation';
7403 }
7404 }
7405 sub node_type ($;$) {
7406 if (@_ == 1) {my ($self) = @_;
7407 my $r = '';
7408 $r = '#document';
7409 $r;
7410 } else {my ($self) = @_;
7411 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocument', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'node_type';
7412 }
7413 }
7414 sub inner_text ($;%) {
7415 my ($self, %opt) = @_;
7416 my $r = '';
7417 $r}
7418 sub actual_inner_text ($;%) {
7419 my ($self, %opt) = @_;
7420 my $r = '';
7421 $r}
7422 sub _new_object ($) {
7423 my ($self) = @_;
7424 my $r;
7425
7426 {
7427
7428
7429 $r =
7430 Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode->_new_object
7431 ($self);
7432 $r->{
7433 'swnt'
7434 } = '#document';
7435 $r->{
7436 'swnsb'
7437 } = {URI => ''};
7438 $r->{
7439 'swetb'
7440 } = {};
7441 $r->{
7442 'nsx'
7443 } =
7444 1
7445 ; ## Always t r u e
7446 $r->{
7447 'etx'
7448 } =
7449 1
7450 ; ## Always t r u e
7451
7452
7453 }
7454 $r}
7455 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocument>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core',
7456 {'',
7457 '1',
7458 '2.1',
7459 '1'}};
7460 $Message::DOM::ClassPoint{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocument>} = 2.1;
7461 $Message::Util::ManakaiNode::ManakaiNodeRef::Prop{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocument>} = {'o',
7462 ['p'],
7463 's',
7464 ['swcn'],
7465 's2',
7466 ['swetb']};
7467 package Message::Markup::IF::SWCFGDocumentFragment;
7468 our $VERSION = 20061105.0240;
7469 package Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocumentFragment;
7470 our $VERSION = 20061105.0240;
7471 push our @ISA, 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode',
7472 'Message::Markup::IF::SWCFGDocumentFragment';
7473 sub is_shadow_master ($;$) {
7474 if (@_ == 1) {my ($self) = @_;
7475 my $r = 0;
7476
7477 {
7478
7479
7480 $r = $self->{
7481 'node'
7482 }->{
7483 'shadowmaster'
7484 };
7485
7486
7487 }
7488 $r;
7489 } else {my ($self) = @_;
7490 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocumentFragment', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'is_shadow_master';
7491 }
7492 }
7493 sub node_type ($;$) {
7494 if (@_ == 1) {my ($self) = @_;
7495 my $r = '';
7496 $r = '#fragment';
7497 $r;
7498 } else {my ($self) = @_;
7499 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocumentFragment', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'node_type';
7500 }
7501 }
7502 sub _new_object ($) {
7503 my ($self) = @_;
7504 my $r;
7505
7506 {
7507
7508
7509 $r =
7510 Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode->_new_object
7511 ($self);
7512 $r->{
7513 'swnt'
7514 } = '#fragment';
7515 $r->{
7516 'nsx'
7517 } =
7518 1
7519 ; ## Always t r u e
7520 $r->{
7521 'etx'
7522 } =
7523 1
7524 ; ## Always t r u e
7525
7526
7527 }
7528 $r}
7529 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocumentFragment>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core',
7530 {'',
7531 '1',
7532 '2.1',
7533 '1'}};
7534 $Message::DOM::ClassPoint{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocumentFragment>} = 2.1;
7535 $Message::Util::ManakaiNode::ManakaiNodeRef::Prop{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocumentFragment>} = {'o',
7536 ['p',
7537 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent',
7538 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf',
7539 'shadowo'],
7540 's',
7541 ['swcn']};
7542 package Message::Markup::IF::SWCFGChildNodeList;
7543 our $VERSION = 20061105.0240;
7544 package Message::Markup::SuikaWikiConfig21::ManakaiSWCFGChildNodeList;
7545 our $VERSION = 20061105.0240;
7546 push our @ISA, 'Message::Util::ManakaiNode::ManakaiNodeRef',
7547 'Tie::Array',
7548 'Message::Markup::IF::SWCFGChildNodeList';
7549 sub FETCHSIZE ($;$) {
7550 if (@_ == 1) {my ($self) = @_;
7551 my $r = 0;
7552
7553 {
7554
7555 my
7556 $node = $self->{
7557 'node'
7558 };
7559 $r = @{$node->{
7560 'swcn'
7561 }};
7562
7563
7564 {
7565
7566 unless
7567 ($node->{
7568 'etx'
7569 }) {
7570
7571
7572 {
7573
7574 local $Error::Depth = $Error::Depth + 1;
7575
7576 {
7577
7578
7579 my
7580 $__qn;
7581 if ($node->{
7582 'nsx'
7583 }) {
7584 $__qn = $self->{nodeClass}->
7585 _get_node_reference
7586 ($node)
7587 ->
7588 real_qualified_name
7589 ;
7590 } else {
7591 $__qn = $node->{
7592 'swln'
7593 };
7594
7595 }
7596 my $__od = $node->{
7597 'swod'
7598 };
7599 if ($__od->{
7600 'swetb'
7601 }->{$__qn}) {
7602 my $b = $__od->{
7603 'swetb'
7604 }->{$__qn};
7605 $node->{
7606 'swns'
7607 } =
7608 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
7609 ;
7610 if ($node->{
7611 'nsx'
7612 }) {
7613 $node->{
7614 'swln'
7615 } = $__qn;
7616 } else {
7617 $node->{
7618 'nsx'
7619 } =
7620 1
7621 ;
7622 }
7623 unless ($b->{namespaceExpanded}) {
7624 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
7625 my $__prefix = $1;
7626 $b->{shadowNamespaceURI}
7627 = $self->{nodeClass}->
7628 _get_node_reference
7629 ($__od)
7630 ->
7631 lookup_namespace_uri
7632
7633 ($__prefix, make_new_binding =>
7634 0
7635 ,
7636 raise_prefix_exception =>
7637 1
7638 );
7639 }
7640 $b->{namespaceExpanded} =
7641 1
7642 ;
7643 }
7644 $node->{
7645 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
7646 } = $b->{shadowNamespaceURI};
7647 $node->{
7648 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
7649 } = $b->{shadowLocalName};
7650 for my $__p (qw/shadowContent shadowSibling/) {
7651 next unless $b->{$__p};
7652 my $cl = $self->{nodeClass}->
7653 _get_node_reference
7654 ($b->{$__p})
7655 ->clone;
7656 my $__n = $node->{{shadowContent =>
7657 'shadow'
7658 ,
7659 shadowSibling =>
7660 'shadowsib'
7661 }->{$__p}}
7662 = $cl->{
7663 'node'
7664 };
7665 $node->
7666 _import_tree
7667 ($__n);
7668 $__n->{{shadowContent =>
7669 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
7670 ,
7671 shadowSibling =>
7672 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
7673 }->{$__p}} = $node;
7674 }
7675 }
7676 $node->{
7677 'etx'
7678 } =
7679 1
7680 ;
7681
7682
7683
7684 }
7685
7686
7687 ;}
7688
7689 ;
7690 }
7691
7692
7693 }
7694
7695 ;
7696 if ($node->{
7697 'shadow'
7698 }) {
7699 $r += @{$node->{
7700 'shadow'
7701 }->{
7702 'swcn'
7703 }};
7704 }
7705 for my $c (@{$node->{
7706 'swcn'
7707 }}) {
7708
7709
7710 {
7711
7712 unless
7713 ($c->{
7714 'etx'
7715 }) {
7716
7717
7718 {
7719
7720 local $Error::Depth = $Error::Depth + 1;
7721
7722 {
7723
7724
7725 my
7726 $__qn;
7727 if ($c->{
7728 'nsx'
7729 }) {
7730 $__qn = $self->{nodeClass}->
7731 _get_node_reference
7732 ($c)
7733 ->
7734 real_qualified_name
7735 ;
7736 } else {
7737 $__qn = $c->{
7738 'swln'
7739 };
7740
7741 }
7742 my $__od = $c->{
7743 'swod'
7744 };
7745 if ($__od->{
7746 'swetb'
7747 }->{$__qn}) {
7748 my $b = $__od->{
7749 'swetb'
7750 }->{$__qn};
7751 $c->{
7752 'swns'
7753 } =
7754 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
7755 ;
7756 if ($c->{
7757 'nsx'
7758 }) {
7759 $c->{
7760 'swln'
7761 } = $__qn;
7762 } else {
7763 $c->{
7764 'nsx'
7765 } =
7766 1
7767 ;
7768 }
7769 unless ($b->{namespaceExpanded}) {
7770 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
7771 my $__prefix = $1;
7772 $b->{shadowNamespaceURI}
7773 = $self->{nodeClass}->
7774 _get_node_reference
7775 ($__od)
7776 ->
7777 lookup_namespace_uri
7778
7779 ($__prefix, make_new_binding =>
7780 0
7781 ,
7782 raise_prefix_exception =>
7783 1
7784 );
7785 }
7786 $b->{namespaceExpanded} =
7787 1
7788 ;
7789 }
7790 $c->{
7791 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
7792 } = $b->{shadowNamespaceURI};
7793 $c->{
7794 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
7795 } = $b->{shadowLocalName};
7796 for my $__p (qw/shadowContent shadowSibling/) {
7797 next unless $b->{$__p};
7798 my $cl = $self->{nodeClass}->
7799 _get_node_reference
7800 ($b->{$__p})
7801 ->clone;
7802 my $__n = $c->{{shadowContent =>
7803 'shadow'
7804 ,
7805 shadowSibling =>
7806 'shadowsib'
7807 }->{$__p}}
7808 = $cl->{
7809 'node'
7810 };
7811 $c->
7812 _import_tree
7813 ($__n);
7814 $__n->{{shadowContent =>
7815 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
7816 ,
7817 shadowSibling =>
7818 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
7819 }->{$__p}} = $c;
7820 }
7821 }
7822 $c->{
7823 'etx'
7824 } =
7825 1
7826 ;
7827
7828
7829
7830 }
7831
7832
7833 ;}
7834
7835 ;
7836 }
7837
7838
7839 }
7840
7841 ;
7842 $r += @{$c->{
7843 'shadowsib'
7844 }->{
7845 'swcn'
7846 }}
7847 if $c->{
7848 'shadowsib'
7849 };
7850 }
7851
7852
7853 }
7854 $r;
7855 } else {my ($self) = @_;
7856 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGChildNodeList', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'length';
7857 }
7858 }
7859 *length = \&FETCHSIZE;
7860 sub FETCH ($$) {
7861 my ($self, $index) = @_;
7862 my $r;
7863
7864 {
7865
7866 if
7867 ($index < 0) {
7868 $index = $self->
7869 length
7870 + $index;
7871 }
7872 my $node = $self->{
7873 'node'
7874 };
7875 $r = $node->{
7876 'swcn'
7877 }->[$index];
7878 unless ($r) {
7879 $index -= @{$node->{
7880 'swcn'
7881 }};
7882
7883
7884 {
7885
7886 unless
7887 ($node->{
7888 'etx'
7889 }) {
7890
7891
7892 {
7893
7894 local $Error::Depth = $Error::Depth + 1;
7895
7896 {
7897
7898
7899 my
7900 $__qn;
7901 if ($node->{
7902 'nsx'
7903 }) {
7904 $__qn = $self->{nodeClass}->
7905 _get_node_reference
7906 ($node)
7907 ->
7908 real_qualified_name
7909 ;
7910 } else {
7911 $__qn = $node->{
7912 'swln'
7913 };
7914
7915 }
7916 my $__od = $node->{
7917 'swod'
7918 };
7919 if ($__od->{
7920 'swetb'
7921 }->{$__qn}) {
7922 my $b = $__od->{
7923 'swetb'
7924 }->{$__qn};
7925 $node->{
7926 'swns'
7927 } =
7928 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
7929 ;
7930 if ($node->{
7931 'nsx'
7932 }) {
7933 $node->{
7934 'swln'
7935 } = $__qn;
7936 } else {
7937 $node->{
7938 'nsx'
7939 } =
7940 1
7941 ;
7942 }
7943 unless ($b->{namespaceExpanded}) {
7944 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
7945 my $__prefix = $1;
7946 $b->{shadowNamespaceURI}
7947 = $self->{nodeClass}->
7948 _get_node_reference
7949 ($__od)
7950 ->
7951 lookup_namespace_uri
7952
7953 ($__prefix, make_new_binding =>
7954 0
7955 ,
7956 raise_prefix_exception =>
7957 1
7958 );
7959 }
7960 $b->{namespaceExpanded} =
7961 1
7962 ;
7963 }
7964 $node->{
7965 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
7966 } = $b->{shadowNamespaceURI};
7967 $node->{
7968 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
7969 } = $b->{shadowLocalName};
7970 for my $__p (qw/shadowContent shadowSibling/) {
7971 next unless $b->{$__p};
7972 my $cl = $self->{nodeClass}->
7973 _get_node_reference
7974 ($b->{$__p})
7975 ->clone;
7976 my $__n = $node->{{shadowContent =>
7977 'shadow'
7978 ,
7979 shadowSibling =>
7980 'shadowsib'
7981 }->{$__p}}
7982 = $cl->{
7983 'node'
7984 };
7985 $node->
7986 _import_tree
7987 ($__n);
7988 $__n->{{shadowContent =>
7989 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
7990 ,
7991 shadowSibling =>
7992 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
7993 }->{$__p}} = $node;
7994 }
7995 }
7996 $node->{
7997 'etx'
7998 } =
7999 1
8000 ;
8001
8002
8003
8004 }
8005
8006
8007 ;}
8008
8009 ;
8010 }
8011
8012
8013 }
8014
8015 ;
8016 $r = $node->{
8017 'shadow'
8018 }->{
8019 'swcn'
8020 }->[$index]
8021 if $node->{
8022 'shadow'
8023 };
8024 unless ($r) {
8025 if ($node->{
8026 'shadow'
8027 }) {
8028 $index -= @{$node->{
8029 'shadow'
8030 }->{
8031 'swcn'
8032 }};
8033 }
8034 for my $c (@{$node->{
8035 'swcn'
8036 }}) {
8037
8038
8039 {
8040
8041 unless
8042 ($c->{
8043 'etx'
8044 }) {
8045
8046
8047 {
8048
8049 local $Error::Depth = $Error::Depth + 1;
8050
8051 {
8052
8053
8054 my
8055 $__qn;
8056 if ($c->{
8057 'nsx'
8058 }) {
8059 $__qn = $self->{nodeClass}->
8060 _get_node_reference
8061 ($c)
8062 ->
8063 real_qualified_name
8064 ;
8065 } else {
8066 $__qn = $c->{
8067 'swln'
8068 };
8069
8070 }
8071 my $__od = $c->{
8072 'swod'
8073 };
8074 if ($__od->{
8075 'swetb'
8076 }->{$__qn}) {
8077 my $b = $__od->{
8078 'swetb'
8079 }->{$__qn};
8080 $c->{
8081 'swns'
8082 } =
8083 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#RealName'
8084 ;
8085 if ($c->{
8086 'nsx'
8087 }) {
8088 $c->{
8089 'swln'
8090 } = $__qn;
8091 } else {
8092 $c->{
8093 'nsx'
8094 } =
8095 1
8096 ;
8097 }
8098 unless ($b->{namespaceExpanded}) {
8099 if ($b->{shadowLocalName} =~ s/^([^:]*)://) {
8100 my $__prefix = $1;
8101 $b->{shadowNamespaceURI}
8102 = $self->{nodeClass}->
8103 _get_node_reference
8104 ($__od)
8105 ->
8106 lookup_namespace_uri
8107
8108 ($__prefix, make_new_binding =>
8109 0
8110 ,
8111 raise_prefix_exception =>
8112 1
8113 );
8114 }
8115 $b->{namespaceExpanded} =
8116 1
8117 ;
8118 }
8119 $c->{
8120 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowNamespaceURI'
8121 } = $b->{shadowNamespaceURI};
8122 $c->{
8123 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowLocalName'
8124 } = $b->{shadowLocalName};
8125 for my $__p (qw/shadowContent shadowSibling/) {
8126 next unless $b->{$__p};
8127 my $cl = $self->{nodeClass}->
8128 _get_node_reference
8129 ($b->{$__p})
8130 ->clone;
8131 my $__n = $c->{{shadowContent =>
8132 'shadow'
8133 ,
8134 shadowSibling =>
8135 'shadowsib'
8136 }->{$__p}}
8137 = $cl->{
8138 'node'
8139 };
8140 $c->
8141 _import_tree
8142 ($__n);
8143 $__n->{{shadowContent =>
8144 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent'
8145 ,
8146 shadowSibling =>
8147 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf'
8148 }->{$__p}} = $c;
8149 }
8150 }
8151 $c->{
8152 'etx'
8153 } =
8154 1
8155 ;
8156
8157
8158
8159 }
8160
8161
8162 ;}
8163
8164 ;
8165 }
8166
8167
8168 }
8169
8170 ;
8171 if ($c->{
8172 'shadowsib'
8173 }) {
8174 $r = $c->{
8175 'shadowsib'
8176 }->{
8177 'swcn'
8178 }->[$index];
8179 last if $r;
8180 $index -= @{$c->{
8181 'shadowsib'
8182 }->{
8183 'swcn'
8184 }};
8185 }
8186 }
8187 }
8188 }
8189 $r = $self->{nodeClass}
8190 ->
8191 _get_node_reference
8192 ($r) if $r;
8193
8194
8195 }
8196 $r}
8197 *item = \&FETCH;
8198 sub TIEARRAY ($$) {
8199 my ($self, $nodeList) = @_;
8200 my $r;
8201
8202 {
8203
8204
8205 $r = $nodeList;
8206
8207
8208 }
8209 $r}
8210 sub DESTROY ($) {
8211 my ($self) = @_;
8212
8213 {
8214
8215 if
8216 (my $node = $self->{
8217 'node'
8218 }) {
8219 CORE::delete $self->{
8220 'node'
8221 };
8222 unless ($self->{
8223 'w'
8224 }) {
8225 $node->{
8226 'rc'
8227 }--;
8228 ${$node->{
8229 'grc'
8230 }}--;
8231 unless (
8232 (${$node->{'grc'}} > 0)
8233 ) {
8234 $node->
8235 _destroy
8236 ;
8237 }
8238 }
8239 } else {
8240 warn ref ($self) . q{->DESTROY: there is no associated }.
8241 q{node object - you have a global variable or }.
8242 qq{potential memory-leak detected\n};
8243 }
8244
8245
8246 }
8247 }
8248 use overload
8249 bool => sub () {1},
8250 '@{}' => sub ($) {
8251 my ($self) = @_;
8252 my $r = [];
8253
8254 {
8255
8256 tie
8257 my @list, ref $self, $self;
8258 $r = \@list;
8259
8260
8261 }
8262 $r}
8263 ,
8264 fallback => 1;
8265 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGChildNodeList>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core',
8266 {'',
8267 '1',
8268 '2.1',
8269 '1'}};
8270 $Message::DOM::ClassPoint{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGChildNodeList>} = 2.1;
8271 $Message::Util::ManakaiNode::ManakaiNodeRef::Prop{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGChildNodeList>} = {};
8272 package Message::Markup::IF::SWCFGException;
8273 our $VERSION = 20061105.0240;
8274 push our @ISA, 'Message::Util::Error';
8275
8276 sub ___error_def () {
8277 \%Message::Markup::IF::SWCFGException::ErrorDef
8278 }
8279
8280 sub HIERARCHY_REQUEST_ERR () {
8281 3}
8282 $Message::Markup::IF::SWCFGException::ErrorDef{'HIERARCHY_REQUEST_ERR'} = {'description',
8283 'An attempt is made to insert a node somewhere it does not belong.',
8284 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#code',
8285 '3'};
8286 $Message::Markup::IF::SWCFGException::ErrorDef{'HIERARCHY_REQUEST_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#HIERARCHY_ANCESTOR_OR_SELF_ERR'} = {'description',
8287 'An attempt is made to insert an ancestor of this node or this node itself.'};
8288 $Message::Markup::IF::SWCFGException::ErrorDef{'HIERARCHY_REQUEST_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#HIERARCHY_BAD_TYPE_ERR'} = {'description',
8289 'An attempt is made to insert a node %p ( name => {http://suika.fam.cx/~wakaba/archive/2005/swcfg21#childNodeType}, prefix => { of type }); into the node %p (name => {http://suika.fam.cx/~wakaba/archive/2005/swcfg21#parentNodeType}, prefix => {of type });, which is not allowed'};
8290 $Message::Markup::IF::SWCFGException::ErrorDef{'HIERARCHY_REQUEST_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#HIERARCHY_NO_VALUE_ERR'} = {'description',
8291 'An attempt is made to set a node value for a %p (name => {http://suika.fam.cx/~wakaba/archive/2005/swcfg21#parentNodeType}); node'};
8292 sub WRONG_DOCUMENT_ERR () {
8293 4}
8294 $Message::Markup::IF::SWCFGException::ErrorDef{'WRONG_DOCUMENT_ERR'} = {'description',
8295 'A node is used in a different document than the one for which it is created.',
8296 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#code',
8297 '4'};
8298 $Message::Markup::IF::SWCFGException::ErrorDef{'WRONG_DOCUMENT_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#EXTERNAL_NODE_ERR'} = {'description',
8299 'An attempt is made to append a node created for another document'};
8300 sub TYPE_MISMATCH_ERR () {
8301 17}
8302 $Message::Markup::IF::SWCFGException::ErrorDef{'TYPE_MISMATCH_ERR'} = {'description',
8303 'The type of an object is incompatible with the type of the parameter.',
8304 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#code',
8305 '17'};
8306 $Message::Markup::IF::SWCFGException::ErrorDef{'TYPE_MISMATCH_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#BAD_VALUE_ERR'} = {'description',
8307 'A value%p (name => {http://suika.fam.cx/~wakaba/archive/2005/swcfg21#actualType}, prefix => { of type }); is specified where only either string or array reference is allowed'};
8308 $Message::Markup::IF::SWCFGException::ErrorDef{'TYPE_MISMATCH_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#NOT_NODE_ERR'} = {'description',
8309 'The type of an object is not <IF::SWCFGNode>.'};
8310 $Message::Markup::IF::SWCFGException::ErrorDef{'TYPE_MISMATCH_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#APPEND_NULL_TEXT_ERR'} = {'description',
8311 'An attempt is made to append a <DOM::null> value.'};
8312 sub NOT_SUPPORTED_ERR () {
8313 9}
8314 $Message::Markup::IF::SWCFGException::ErrorDef{'NOT_SUPPORTED_ERR'} = {'description',
8315 '',
8316 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#code',
8317 '9'};
8318 $Message::Markup::IF::SWCFGException::ErrorDef{'NOT_SUPPORTED_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#SWCFG_VERSION_NOT_SUPPORTED_ERR'} = {'description',
8319 'The implementation does not support the specified version of SuikaWikiConfig.'};
8320 sub NAMESPACE_ERR () {
8321 14}
8322 $Message::Markup::IF::SWCFGException::ErrorDef{'NAMESPACE_ERR'} = {'description',
8323 'An error related to namespaces has occurred.',
8324 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#code',
8325 '14'};
8326 $Message::Markup::IF::SWCFGException::ErrorDef{'NAMESPACE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#UNDECLARED_NS_PREFIX_ERR'} = {'description',
8327 'Namespace prefix "%p (name => {http://www.w3.org/2001/04/infoset#prefix});" is not declared'};
8328 sub PARSE_ERR () {
8329 81}
8330 $Message::Markup::IF::SWCFGException::ErrorDef{'PARSE_ERR'} = {'description',
8331 '',
8332 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#code',
8333 '81'};
8334 $Message::Markup::IF::SWCFGException::ErrorDef{'PARSE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#SWCFG_PARSE_ERR'} = {'description',
8335 'The implementation is unable to read and parse the SuikaWikiConfig document.'};
8336 package Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException;
8337 our $VERSION = 20061105.0240;
8338 push our @ISA, 'Message::Util::Error::DOMException::Exception',
8339 'Message::Markup::IF::SWCFGException';
8340 sub text ($;$) {
8341 if (@_ == 1) {my ($self) = @_;
8342 my $r;
8343
8344 {
8345
8346
8347 {
8348
8349 local $Error::Depth = $Error::Depth + 1;
8350
8351 {
8352
8353
8354
8355 $r = $self->SUPER::text;
8356 if (defined $self->{
8357 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode'
8358 }) {
8359 $r = 'Node ' . $self->{
8360 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode'
8361 }->
8362 node_path
8363
8364 . ': ' . $r;
8365 }
8366
8367
8368
8369 }
8370
8371
8372 ;}
8373
8374 ;
8375
8376
8377 }
8378 $r;
8379 } else {my ($self) = @_;
8380 report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'text';
8381 }
8382 }
8383 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core',
8384 {'',
8385 '1',
8386 '2.1',
8387 '1'}};
8388 $Message::DOM::ClassPoint{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException>} = 2.1;
8389 package Message::Markup::IF::SWCFGParser;
8390 our $VERSION = 20061105.0240;
8391 package Message::Markup::SuikaWikiConfig21::ManakaiSWCFGParser;
8392 our $VERSION = 20061105.0240;
8393 push our @ISA, 'Message::Util::Error::DOMException::ManakaiDefaultExceptionHandler',
8394 'Message::Markup::IF::SWCFGParser';
8395 sub parse ($$) {
8396 my ($self, $input) = @_;
8397 my $r;
8398
8399 {
8400
8401 my
8402 $text;
8403 ## 1. characterStream
8404 if (defined (my $cs = $input->{character_stream})) {
8405 local $/ = undef;
8406 $text = \ (readline $cs);
8407 }
8408 ## 3. stringData
8409 elsif (defined (my $sd = $input->{string_data})) {
8410 $text = $sd;
8411 } else {
8412 ## TODO: no-input-specified DOM error
8413
8414 report Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException -object => $self, '-type' => 'PARSE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'parse', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#SWCFG_PARSE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGParser', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'input';
8415
8416 ;
8417 }
8418
8419 my $root = $self->{
8420 'impl'
8421 }
8422 ->
8423 create_swcfg_document
8424 ;
8425
8426 ## TODO: Make configurable
8427 my $no_magic_line =
8428 0
8429 ;
8430 my $no_namespace =
8431 0
8432 ;
8433 my $no_preserve_wsp =
8434 0
8435 ;
8436 my $no_binding =
8437 0
8438 ;
8439
8440 ## Magic line
8441 if (not $no_magic_line and
8442 $$text =~ s[^\#\?SuikaWikiConfig/(\d+\.\d+)\x0D?\x0A][]s) {
8443 my $version = $1;
8444 if ($version eq '2.1') {
8445 #
8446 } elsif ($version eq '2.0') {
8447 $no_namespace =
8448 1
8449 ;
8450 $no_preserve_wsp =
8451 1
8452 ;
8453 $no_binding =
8454 1
8455 ;
8456 } else {
8457 ## TODO: Version unsupported DOM error
8458
8459 report Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException -object => $self, '-type' => 'PARSE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'parse', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#SWCFG_PARSE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGParser', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'input';
8460
8461 ;
8462 }
8463 }
8464
8465 my $current = $root;
8466 my $current_element = $root;
8467 my $is_new_element = 0;
8468 my $is_list_element = 0;
8469 my $wsp_length = 0;
8470 my $vfragment = '';
8471 for my $line (split /\x0D?\x0A/, $$text) {
8472 if ($line =~ /^([^#\s].*):\s*([^\s:][^:]*)?$/) {
8473 my ($name, $val) = ($1, $2);
8474 substr ($name, 0, 1) = '' if defined $name and
8475 substr ($name, 0, 1) eq '\\';
8476 substr ($val, 0, 1) = '' if defined $val and
8477 substr ($val, 0, 1) eq '\\';
8478 if (substr ($name, -6) eq '[list]') {
8479 substr ($name, -6) = '';
8480 $val = length ($val) ? [$val] : [];
8481 $is_list_element = 1;
8482 } else {
8483 $is_list_element = 0;
8484 }
8485 $current_element = $root->
8486 append_new_node
8487
8488 (type => '#element',
8489 local_name => $name,
8490 value => $val);
8491 $current_element->{
8492 'node'
8493 }
8494 ->{
8495 'nsx'
8496 } =
8497 0
8498 unless
8499 $no_namespace;
8500 $current_element->{
8501 'node'
8502 }
8503 ->{
8504 'etx'
8505 } =
8506 0
8507 unless
8508 $no_binding;
8509 if (defined $2) { ## Foo: bar
8510 $current = $root;
8511 $current_element = $root;
8512 } else { ## Foo:\n bar\n baz
8513 $current = $current_element;
8514 $is_new_element = 1;
8515 }
8516 } elsif ($line =~ /^\s+(\@+)(.*):\s*([^\s:][^:]*)?$/) {
8517 my ($nest, $name, $val) = (length $1, $2, $3);
8518 substr ($name, 0, 1) = '' if defined $name and
8519 substr ($name, 0, 1) eq '\\';
8520 substr ($val, 0, 1) = '' if defined $val and
8521 substr ($val, 0, 1) eq '\\';
8522 if (substr ($name, -6) eq '[list]') {
8523 substr ($name, -6) = '';
8524 $val = (defined ($val) and length ($val)) ? [$val] : [];
8525 $is_list_element = 1;
8526 } else {
8527 $is_list_element = 0;
8528 }
8529 my $ce;
8530 if (length ($name)) {
8531 while ($current_element->
8532 flag
8533
8534 ('p__nest_level' =>
8535 undef
8536 ,
8537 default => 0) >= $nest) {
8538 $current_element
8539 = $current_element->
8540 parent_node
8541 ;
8542 }
8543 $ce = $current_element->
8544 append_new_node
8545
8546 (type => '#element',
8547 local_name => $name,
8548 value => $val);
8549 $ce->{
8550 'node'
8551 }
8552 ->{
8553 'nsx'
8554 } =
8555 0
8556 unless
8557 $no_namespace;
8558 $ce->{
8559 'node'
8560 }
8561 ->{
8562 'etx'
8563 } =
8564 0
8565 unless
8566 $no_binding;
8567 $ce->
8568 flag
8569 ('p__nest_level'
8570 => $current_element->
8571 flag
8572
8573 ('p__nest_level' =>
8574 undef
8575 ,
8576 default => 0) + 1);
8577 unless (defined $3) { ## @foo: \nbar
8578 $current_element = $ce;
8579 $current = $ce;
8580 $is_new_element = 1;
8581 }
8582 } else { ## @@:
8583 while ($current_element->
8584 flag
8585
8586 ('p__nest_level' =>
8587 undef
8588 ,
8589 default => 0) >= $nest - 1) {
8590 $current_element
8591 = $current_element->
8592 parent_node
8593 ;
8594 }
8595 if (defined $val) {
8596 if (defined $current_element->{
8597 'node'
8598 }
8599 ->{
8600 'swval'
8601 }) {
8602 if (ref $current_element->{
8603 'node'
8604 }->{
8605 'swval'
8606 }
8607 eq 'ARRAY') {
8608 push @{$current_element->{
8609 'node'
8610 }
8611 ->{
8612 'swval'
8613 }}, $val;
8614 } else {
8615 $current_element->{
8616 'node'
8617 }
8618 ->{
8619 'swval'
8620 } .= $val;
8621 }
8622 } else {
8623 $current_element->{
8624 'node'
8625 }->{
8626 'swval'
8627 } = $val;
8628 }
8629 }
8630 $current = $current_element;
8631 unless (defined $3) { ## @@: \nbar
8632 $is_new_element = 1;
8633 }
8634 }
8635 } elsif ($line =~ /^(\s+)(\S.*)$/) {
8636 my ($wsp, $val) = ($1, $2);
8637 if (substr ($val, 0, 1) eq '#' and
8638 not $is_new_element and
8639 length $wsp < $wsp_length) { ## Not part of element
8640 $current = $root->
8641 append_new_node
8642
8643 (type => '#comment',
8644 value => substr ($val, 1));
8645 } else {
8646 if (substr ($val, 0, 1) eq '\\') {
8647 substr ($val, 0, 1) = '';
8648 $wsp = '';
8649 }
8650 if ($is_new_element or $is_list_element) {
8651 $wsp_length = length $wsp;
8652 if (defined $current_element->{
8653 'node'
8654 }
8655 ->{
8656 'swval'
8657 }) {
8658 if (ref $current_element->{
8659 'node'
8660 }
8661 ->{
8662 'swval'
8663 } eq 'ARRAY') {
8664 push @{$current_element->{
8665 'node'
8666 }
8667 ->{
8668 'swval'
8669 }}, $val;
8670 } else {
8671 $current_element->{
8672 'node'
8673 }
8674 ->{
8675 'swval'
8676 } .= $val;
8677 }
8678 } else {
8679 $current_element->{
8680 'node'
8681 }
8682 ->{
8683 'swval'
8684 } = $val;
8685 }
8686 $is_new_element = 0;
8687 $vfragment = '';
8688 } else {
8689 $wsp = $no_preserve_wsp ? '' : substr ($wsp, $wsp_length);
8690 $val = $vfragment . "\x0A" . $wsp . $val;
8691 if (defined $current_element->{
8692 'node'
8693 }
8694 ->{
8695 'swval'
8696 }) {
8697 if (ref $current_element->{
8698 'node'
8699 }
8700 ->{
8701 'swval'
8702 } eq 'ARRAY') {
8703 push @{$current_element->{
8704 'node'
8705 }
8706 ->{
8707 'swval'
8708 }}, $val;
8709 } else {
8710 $current_element->{
8711 'node'
8712 }
8713 ->{
8714 'swval'
8715 } .= $val;
8716 }
8717 } else {
8718 $current_element->{
8719 'node'
8720 }
8721 ->{
8722 'swval'
8723 } = $val;
8724 }
8725 $vfragment = '';
8726 }
8727 }
8728 } elsif ($line =~ /^(\s*)$/) {
8729 $vfragment .= "\x0A" . substr ($1, $wsp_length)
8730 unless $no_preserve_wsp;
8731 $current = $root
8732 if $current->
8733 node_type eq
8734 '#comment';
8735 } else { $line =~ /^\#?(.*)$/;
8736 #} elsif ($line =~ /^\#(.*)$/) {
8737 my ($v) = ($1);
8738 if ($current->
8739 node_type eq
8740 '#comment') {
8741 $current->
8742 append_text
8743 ("\x0A" . $v);
8744 } else {
8745 $current = $root->
8746 append_new_node
8747
8748 (type => '#comment', value => $v);
8749 }
8750 #} else {
8751 # $current = $root;
8752 # #print STDERR qq(**$line**\n);
8753 }
8754 }
8755 unless ($no_namespace and $no_binding) {
8756 my @remove;
8757 for my $i (0..$#{$root->{
8758 'node'
8759 }->{
8760 'swcn'
8761 }}) {
8762 my $n = $root->{
8763 'node'
8764 }->{
8765 'swcn'
8766 }->[$i];
8767 next unless $n->{
8768 'swnt'
8769 } eq '#element';
8770 if (not $no_namespace and $n->{
8771 'swln'
8772 } eq 'Namespace') {
8773 for my $cn (@{$n->{
8774 'swcn'
8775 }}) {
8776 next unless $cn->{
8777 'swnt'
8778 } eq '#element';
8779 if ($cn->{
8780 'swval'
8781 }) {
8782 $root->{
8783 'node'
8784 }->{
8785 'swnsb'
8786 }
8787 ->{$cn->{
8788 'swln'
8789 }} = $cn->{
8790 'swval'
8791 };
8792 } else {
8793 ISNULL: {
8794 for my $in (@{$cn->{
8795 'swcn'
8796 }}) {
8797 if ($in->{
8798 'swnt'
8799 } eq '#element' and
8800 $in->{
8801 'swln'
8802 } eq 'is-
8803 undef
8804 ' and
8805 $in->{
8806 'swval'
8807 }) {
8808 $root->{
8809 'node'
8810 }->{
8811 'swnsb'
8812 }
8813 ->{$cn->{
8814 'swln'
8815 }} = undef;
8816 last ISNULL;
8817 }
8818 }
8819 $root->{
8820 'node'
8821 }->{
8822 'swnsb'
8823 }
8824 ->{$cn->{
8825 'swln'
8826 }} = $cn->{
8827 'swval'
8828 };
8829 } # ISNULL
8830 }
8831 }
8832 ## TODO: DOM error if unknown node
8833 push @remove, $i;
8834 CORE::delete $n->{
8835 'p'
8836 };
8837 $n->
8838 _orphanate
8839 ;
8840 } elsif (not $no_binding and
8841 $n->{
8842 'swln'
8843 } eq 'ElementTypeBinding') {
8844 my ($et, $sn, $sc, $ss) = ('', '');
8845 my @etr;
8846 CN: for my $cn (@{$n->{
8847 'swcn'
8848 }}) {
8849 unless ($cn->{
8850 'swnt'
8851 } eq '#element') {
8852 push @etr, $cn;
8853 next CN;
8854 }
8855 if ($cn->{
8856 'swln'
8857 } eq 'Name') {
8858 $et = $cn->{
8859 'swval'
8860 } if defined $cn->{
8861 'swval'
8862 };
8863 push @etr, $cn;
8864 } elsif ($cn->{
8865 'swln'
8866 } eq 'ElementType') {
8867 $sn = $cn->{
8868 'swval'
8869 } if defined $cn->{
8870 'swval'
8871 };
8872 push @etr, $cn;
8873 } elsif ($cn->{
8874 'swln'
8875 } eq 'ShadowContent') {
8876 $sc = $cn;
8877 $sc->{
8878 'swnt'
8879 } = '#fragment';
8880 $sc->{
8881 'p'
8882 } =
8883 undef
8884 ;
8885 $sc->{
8886 'shadowmaster'
8887 } =
8888 1
8889 ;
8890 $sc->{
8891 'shadowo'
8892 } = $root->{
8893 'node'
8894 };
8895 $sc->{
8896 'nsx'
8897 } =
8898 1
8899 ;
8900 $sc->{
8901 'etx'
8902 } =
8903 1
8904 ;
8905 $sc->{
8906 't'
8907 }
8908 =
8909 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocumentFragment'
8910 ;
8911 } elsif ($cn->{
8912 'swln'
8913 } eq 'ShadowSibling') {
8914 $ss = $cn;
8915 $ss->{
8916 'swnt'
8917 } = '#fragment';
8918 $ss->{
8919 'p'
8920 } =
8921 undef
8922 ;
8923 $ss->{
8924 'shadowmaster'
8925 } =
8926 1
8927 ;
8928 $ss->{
8929 'shadowo'
8930 } = $root->{
8931 'node'
8932 };
8933 $ss->{
8934 'nsx'
8935 } =
8936 1
8937 ;
8938 $ss->{
8939 'etx'
8940 } =
8941 1
8942 ;
8943 $ss->{
8944 't'
8945 }
8946 =
8947 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocumentFragment'
8948 ;
8949 } else {
8950 push @etr, $cn;
8951 }
8952 }
8953 $n->{
8954 'swcn'
8955 } = [];
8956 for (@etr) {
8957 CORE::delete $_->{
8958 'p'
8959 };
8960 $_->
8961 _orphanate
8962 ;
8963 }
8964 unless (defined $root->{
8965 'node'
8966 }
8967 ->{
8968 'swetb'
8969 }->{$et}) {
8970 $root->{
8971 'node'
8972 }
8973 ->{
8974 'swetb'
8975 }->{$et} = {
8976 elementType => $et,
8977 shadowLocalName => $sn,
8978 namespaceExpanded =>
8979 0
8980 ,
8981 shadowContent => $sc,
8982 shadowSibling => $ss,
8983 };
8984 }
8985 ## TODO: DOM error if unknown node
8986 push @remove, $i;
8987 CORE::delete $n->{
8988 'p'
8989 };
8990 $n->
8991 _orphanate
8992 ;
8993 }
8994 } # $i
8995 for my $i (reverse @remove) {
8996 splice @{$root->{
8997 'node'
8998 }->{
8999 'swcn'
9000 }},
9001 $i, 1, ();
9002 }
9003 }
9004 $r = $root;
9005
9006
9007 }
9008 $r}
9009 sub new ($$$) {
9010 my ($self, $impl, $features) = @_;
9011
9012 {
9013
9014
9015 {
9016
9017 if
9018 (CORE::defined $features) {
9019 if (CORE::ref ($features) eq 'HASH') {
9020 my $__new = {};
9021 for my $__fname (keys %{$features}) {
9022 if (CORE::ref ($features->{$__fname}) eq 'HASH') {
9023 my $__lfname = lc $__fname;
9024 for my $__fver (keys %{$features->{$__fname}}) {
9025 $__new->{$__lfname}->{$__fver} = $features->{$__fname}->{$__fver};
9026 }
9027 } elsif (CORE::ref ($features->{$__fname}) eq 'ARRAY') {
9028 my $__lfname = lc $__fname;
9029 for my $__fver (@{$features->{$__fname}}) {
9030 $__new->{$__lfname}->{$__fver} =
9031 1
9032 ;
9033 }
9034 } else {
9035 $__new->{lc $__fname} = {(CORE::defined $features->{$__fname}
9036 ? $features->{$__fname} : '') =>
9037 1
9038 };
9039 }
9040 }
9041 $features = $__new;
9042 } else {
9043 my @__f = split /\s+/, $features;
9044 my $__new = {};
9045 while (@__f) {
9046 my $__name = lc shift @__f;
9047 if (@__f and $__f[0] =~ /^[\d\.]+$/) {
9048 $__new->{$__name}->{shift @__f} = 1;
9049 } else {
9050 $__new->{$__name}->{''} = 1;
9051 }
9052 }
9053 $features = $__new;
9054 }
9055 } else {
9056 $features = {};
9057 }
9058
9059
9060 }
9061
9062 ;
9063
9064
9065 }
9066 my $r;
9067
9068 {
9069
9070
9071 $r = bless {
9072 'impl'
9073 =>
9074 $impl->
9075 get_feature
9076
9077 (
9078 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#Core'
9079 => '2.1')},
9080 $self;
9081
9082
9083 }
9084 $r}
9085 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGParser>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core',
9086 {'',
9087 '1',
9088 '2.1',
9089 '1'}};
9090 $Message::DOM::ClassPoint{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGParser>} = 2.1;
9091 $Message::DOM::DOMLS::ParserClass{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGParser>} = 1;
9092 package Message::Markup::IF::SWCFGImplementation;
9093 our $VERSION = 20061105.0240;
9094 package Message::Markup::SuikaWikiConfig21::ManakaiSWCFGImplementation;
9095 our $VERSION = 20061105.0240;
9096 push our @ISA, 'Message::DOM::IFLatest::DOMImplementation',
9097 'Message::DOM::IFLatest::DOMImplementation',
9098 'Message::Markup::IF::SWCFGImplementation';
9099 push @Message::DOM::DOMCore::ManakaiDOMImplementation::ISA, q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGImplementation> unless Message::DOM::DOMCore::ManakaiDOMImplementation->isa (q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGImplementation>);
9100 sub create_swcfg_document ($;$) {
9101 my ($self, $version) = @_;
9102 my $r;
9103
9104 {
9105
9106 if
9107 (defined $version and $version ne '2.1') {
9108
9109 report Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException -object => $self, '-type' => 'NOT_SUPPORTED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'create_swcfg_document', 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#version' => $version, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#SWCFG_VERSION_NOT_SUPPORTED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGImplementation';
9110
9111 ;
9112 }
9113 $r =
9114 Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocument->_new_object
9115 ;
9116 $r->{
9117 'impl'
9118 } = $self;
9119 $r->{
9120 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#version'
9121 } = $version || '2.1';
9122 $r =
9123 Message::Markup::SuikaWikiConfig21::ManakaiSWCFGNode->_get_node_reference
9124 ($r);
9125
9126
9127 }
9128 $r}
9129 sub create_swcfg_parser ($;$) {
9130 my ($self, $versions) = @_;
9131 my $r;
9132
9133 {
9134
9135
9136 ## TODO: Support $versions
9137 if (defined $versions) {
9138
9139 report Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException -object => $self, '-type' => 'NOT_SUPPORTED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'create_swcfg_parser', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#SWCFG_VERSION_NOT_SUPPORTED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGImplementation';
9140
9141 ;
9142 }
9143 $r =
9144 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGParser'
9145 ->new ($self);
9146
9147
9148 }
9149 $r}
9150 $Message::DOM::ImplFeature{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGImplementation>}->{q<http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core>}->{q<2.1>} ||= 1;
9151 $Message::DOM::ImplFeature{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGImplementation>}->{q<http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core>}->{q<>} = 1;
9152 $Message::DOM::DOMFeature::ClassInfo->{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGImplementation>}->{has_feature} = {'',
9153 {'',
9154 '1'},
9155 'http://suika.fam.cx/www/2006/feature/min',
9156 {'',
9157 '1',
9158 '3.0',
9159 '1'},
9160 'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#minimum',
9161 {'',
9162 '1',
9163 '3.0',
9164 '1'},
9165 'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core',
9166 {'',
9167 '1',
9168 '2.1',
9169 '1'},
9170 'xml',
9171 {'',
9172 '1',
9173 '1.0',
9174 '1',
9175 '2.0',
9176 '1',
9177 '3.0',
9178 '1'},
9179 'xmlversion',
9180 {'',
9181 '1',
9182 '1.0',
9183 '1',
9184 '1.1',
9185 '1'}};
9186 $Message::DOM::ClassPoint{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGImplementation>} = 13.2;
9187 $Message::DOM::ManakaiDOMImplementationSource::SourceClass{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGImplementation>} = 1;
9188 $Message::DOM::DOMFeature::ClassInfo->{q<Message::DOM::DOMFeature::ManakaiMinimumImplementation>}->{compat_class}->{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGImplementation>} = 1;
9189 $Message::Util::Grove::ClassProp{q<Message::Markup::SuikaWikiConfig21::ManakaiSWCFGImplementation>} = {'v1h',
9190 ['lpmi']};
9191 for ($Message::DOM::IFLatest::DOMImplementation::){}
9192 ## License: <http://suika.fam.cx/~wakaba/archive/2004/8/18/license#Perl+MPL>
9193 1;

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24