1 |
#!/usr/bin/perl |
2 |
## This file is automatically generated |
3 |
## at 2006-12-31T09:21:46+00:00, |
4 |
## from file "DIS.dis", |
5 |
## module <http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS>. |
6 |
## Don't edit by hand! |
7 |
use strict; |
8 |
require Message::DOM::DOMCore; |
9 |
require Message::Markup::SuikaWikiConfig21; |
10 |
require Message::Util::DIS::Perl; |
11 |
require Message::Util::DIS::Value; |
12 |
require Message::Util::Error; |
13 |
require Message::Util::Error::DOMException; |
14 |
require Message::Util::ManakaiNode; |
15 |
package Message::Util::DIS; |
16 |
our $VERSION = 20061231.0921; |
17 |
$Message::DOM::DOMCore::ManakaiDOMConfiguration{'Message::Util::IF::DISDatabase'}->{'error-handler'} = {'checker', |
18 |
sub ($$$) { |
19 |
my ($self, $name, $value) = @_; |
20 |
|
21 |
{ |
22 |
|
23 |
|
24 |
$name = lc $name; |
25 |
|
26 |
|
27 |
} |
28 |
|
29 |
{ |
30 |
|
31 |
|
32 |
$value = bless $value, |
33 |
'Message::DOM::DOMCore::ManakaiDOMErrorHandler' |
34 |
if |
35 |
ref $value eq 'CODE'; |
36 |
|
37 |
|
38 |
} |
39 |
my $r = 0; |
40 |
|
41 |
{ |
42 |
|
43 |
|
44 |
$r = UNIVERSAL::isa ($value, |
45 |
'Message::DOM::IF::DOMErrorHandler' |
46 |
); |
47 |
|
48 |
|
49 |
} |
50 |
$r} |
51 |
, |
52 |
'get_default', |
53 |
sub ($$) { |
54 |
my ($self, $name) = @_; |
55 |
|
56 |
{ |
57 |
|
58 |
|
59 |
$name = lc $name; |
60 |
|
61 |
|
62 |
} |
63 |
my $r; |
64 |
|
65 |
{ |
66 |
|
67 |
|
68 |
$r = sub { |
69 |
my (undef, $err) = @_; |
70 |
CORE::warn $err; |
71 |
return ($err-> |
72 |
severity |
73 |
!= |
74 |
|
75 |
3 |
76 |
); |
77 |
}; |
78 |
|
79 |
|
80 |
} |
81 |
|
82 |
{ |
83 |
|
84 |
|
85 |
$r = bless $r, |
86 |
'Message::DOM::DOMCore::ManakaiDOMErrorHandler' |
87 |
if |
88 |
ref $r eq 'CODE'; |
89 |
|
90 |
|
91 |
} |
92 |
$r} |
93 |
, |
94 |
'iname', |
95 |
'onerr', |
96 |
'otype', |
97 |
'Message::DOM::IF::DOMErrorHandler', |
98 |
'setter', |
99 |
sub ($$$) { |
100 |
my ($self, $name, $value) = @_; |
101 |
|
102 |
{ |
103 |
|
104 |
|
105 |
$name = lc $name; |
106 |
|
107 |
|
108 |
} |
109 |
|
110 |
{ |
111 |
|
112 |
|
113 |
$value = bless $value, |
114 |
'Message::DOM::DOMCore::ManakaiDOMErrorHandler' |
115 |
if |
116 |
ref $value eq 'CODE'; |
117 |
|
118 |
|
119 |
} |
120 |
|
121 |
{ |
122 |
|
123 |
|
124 |
$self->[1]->{ |
125 |
'onerr' |
126 |
} = $value; |
127 |
|
128 |
|
129 |
} |
130 |
} |
131 |
, |
132 |
'type', |
133 |
'object'}; |
134 |
$Message::DOM::DOMCore::ManakaiDOMError::Def{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#more-than-one-methods-for-a-type'} = {'description', |
135 |
'Method |%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#method-name});| for resource <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});> has multiple definitions', |
136 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/Core/textFormatter', |
137 |
'Message::Util::Error::formatter', |
138 |
'sev', |
139 |
'1', |
140 |
't', |
141 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#more-than-one-methods-for-a-type'}; |
142 |
$Message::Util::DIS::Method{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#Interface'}->{'get_error_interface_resource'} = sub ($) { |
143 |
my ($self) = @_; |
144 |
my $r; |
145 |
|
146 |
{ |
147 |
|
148 |
|
149 |
{ |
150 |
|
151 |
local $Error::Depth = $Error::Depth + 1; |
152 |
|
153 |
{ |
154 |
|
155 |
|
156 |
|
157 |
$r = $self; |
158 |
|
159 |
|
160 |
|
161 |
} |
162 |
|
163 |
|
164 |
;} |
165 |
|
166 |
; |
167 |
|
168 |
|
169 |
} |
170 |
$r} |
171 |
; |
172 |
$Message::Util::DIS::Method{'http://suika.fam.cx/~wakaba/archive/2004/dis/Lang#ConstGroup'}->{'get_error_interface_resource'} = sub ($) { |
173 |
my ($self) = @_; |
174 |
my $r; |
175 |
|
176 |
{ |
177 |
|
178 |
|
179 |
{ |
180 |
|
181 |
local $Error::Depth = $Error::Depth + 1; |
182 |
|
183 |
{ |
184 |
|
185 |
|
186 |
my |
187 |
$parent = $self-> |
188 |
parent_resource |
189 |
; |
190 |
if ($parent and |
191 |
$parent-> |
192 |
is_type_uri |
193 |
( |
194 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/ErrorAny' |
195 |
)) { |
196 |
$r = $parent; |
197 |
} |
198 |
|
199 |
|
200 |
|
201 |
} |
202 |
|
203 |
|
204 |
;} |
205 |
|
206 |
; |
207 |
|
208 |
|
209 |
} |
210 |
$r} |
211 |
; |
212 |
$Message::Util::DIS::Method{'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#DOMConfigurationParameter'}->{'get_dom_configuration_parameter_name'} = sub ($) { |
213 |
my ($self) = @_; |
214 |
my $r = ''; |
215 |
|
216 |
{ |
217 |
|
218 |
|
219 |
{ |
220 |
|
221 |
local $Error::Depth = $Error::Depth + 1; |
222 |
|
223 |
{ |
224 |
|
225 |
|
226 |
|
227 |
$r = $self-> |
228 |
get_property_text |
229 |
|
230 |
( |
231 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#domConfigurationParameterName' |
232 |
); |
233 |
unless (defined $r) { |
234 |
$r = $self-> |
235 |
name_uri |
236 |
; |
237 |
} |
238 |
$r = lc $r if defined $r; |
239 |
|
240 |
|
241 |
|
242 |
} |
243 |
|
244 |
|
245 |
;} |
246 |
|
247 |
; |
248 |
|
249 |
|
250 |
} |
251 |
$r} |
252 |
; |
253 |
$Message::Util::DIS::Method{'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#DOMConfigurationParameterApplication'}->{'get_dom_configuration_parameter_name'} = sub ($) { |
254 |
my ($self) = @_; |
255 |
my $r = ''; |
256 |
|
257 |
{ |
258 |
|
259 |
|
260 |
{ |
261 |
|
262 |
local $Error::Depth = $Error::Depth + 1; |
263 |
|
264 |
{ |
265 |
|
266 |
|
267 |
my |
268 |
$cp = $self-> |
269 |
get_property_resource |
270 |
|
271 |
( |
272 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#domConfigurationParameter' |
273 |
); |
274 |
if (defined $cp) { |
275 |
$r = $cp-> |
276 |
get_property_text |
277 |
|
278 |
( |
279 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#domConfigurationParameterName' |
280 |
); |
281 |
unless (defined $r) { |
282 |
$r = $cp-> |
283 |
name_uri |
284 |
; |
285 |
} |
286 |
$r = lc $r if defined $r; |
287 |
} else { |
288 |
$r = |
289 |
undef |
290 |
; # error |
291 |
} |
292 |
|
293 |
|
294 |
|
295 |
} |
296 |
|
297 |
|
298 |
;} |
299 |
|
300 |
; |
301 |
|
302 |
|
303 |
} |
304 |
$r} |
305 |
; |
306 |
$Message::Util::DIS::Method{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#ErrorCode'}->{'get_error_interface_resource'} = sub ($) { |
307 |
my ($self) = @_; |
308 |
my $r; |
309 |
|
310 |
{ |
311 |
|
312 |
|
313 |
{ |
314 |
|
315 |
local $Error::Depth = $Error::Depth + 1; |
316 |
|
317 |
{ |
318 |
|
319 |
|
320 |
my |
321 |
$parent = $self-> |
322 |
parent_resource |
323 |
; |
324 |
if ($parent) { |
325 |
$r = $parent-> |
326 |
get_error_interface_resource |
327 |
; |
328 |
} |
329 |
|
330 |
|
331 |
|
332 |
} |
333 |
|
334 |
|
335 |
;} |
336 |
|
337 |
; |
338 |
|
339 |
|
340 |
} |
341 |
$r} |
342 |
; |
343 |
$Message::Util::DIS::Method{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#ErrorSubCode'}->{'get_error_interface_resource'} = sub ($) { |
344 |
my ($self) = @_; |
345 |
my $r; |
346 |
|
347 |
{ |
348 |
|
349 |
|
350 |
{ |
351 |
|
352 |
local $Error::Depth = $Error::Depth + 1; |
353 |
|
354 |
{ |
355 |
|
356 |
|
357 |
my |
358 |
$parent = $self-> |
359 |
get_error_code_resource |
360 |
; |
361 |
if ($parent) { |
362 |
$r = $parent-> |
363 |
get_error_interface_resource |
364 |
; |
365 |
} |
366 |
|
367 |
|
368 |
|
369 |
} |
370 |
|
371 |
|
372 |
;} |
373 |
|
374 |
; |
375 |
|
376 |
|
377 |
} |
378 |
$r} |
379 |
; |
380 |
$Message::Util::DIS::Method{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#ErrorSubCode'}->{'get_error_code_resource'} = sub ($) { |
381 |
my ($self) = @_; |
382 |
my $r; |
383 |
|
384 |
{ |
385 |
|
386 |
|
387 |
{ |
388 |
|
389 |
local $Error::Depth = $Error::Depth + 1; |
390 |
|
391 |
{ |
392 |
|
393 |
|
394 |
my |
395 |
$parent = $self-> |
396 |
parent_resource |
397 |
; |
398 |
if ($parent and $parent-> |
399 |
is_type_uri |
400 |
|
401 |
( |
402 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#ErrorCode' |
403 |
)) { |
404 |
$r = $parent; |
405 |
} |
406 |
|
407 |
|
408 |
|
409 |
} |
410 |
|
411 |
|
412 |
;} |
413 |
|
414 |
; |
415 |
|
416 |
|
417 |
} |
418 |
$r} |
419 |
; |
420 |
$Message::Util::DIS::Method{'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dcmodel'}->{'parse_string'} = sub ($$$$) { |
421 |
my ($self, $s, $ns, $factory) = @_; |
422 |
my $r; |
423 |
|
424 |
{ |
425 |
|
426 |
|
427 |
{ |
428 |
|
429 |
local $Error::Depth = $Error::Depth + 1; |
430 |
|
431 |
{ |
432 |
|
433 |
|
434 |
|
435 |
$s =~ s/^\s+//; |
436 |
if ($s =~ s/^([^\s(][^\s+*?]*)\s*//) { |
437 |
$r = $factory-> |
438 |
create_element_ns |
439 |
|
440 |
( |
441 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dcmodel:' |
442 |
, 'terminal'); |
443 |
my $uri = $ns-> |
444 |
qname_to_uri |
445 |
|
446 |
($1); |
447 |
$r-> |
448 |
text_content |
449 |
($uri); |
450 |
if ($s =~ s/^([+*?])\s*//) { |
451 |
$r-> |
452 |
set_attribute_ns |
453 |
( |
454 |
undef |
455 |
, 'occurence', $1); |
456 |
} |
457 |
} else { |
458 |
$s =~ s/^\(\s*//; |
459 |
$r = $factory-> |
460 |
create_element_ns |
461 |
|
462 |
( |
463 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dcmodel:' |
464 |
, 'group'); |
465 |
my $current = $r; |
466 |
my $last; |
467 |
while (length $s) { |
468 |
if ($s =~ s/^([^\s()+*?|,&][^\s)+*?,&]*|[+*?|,&][^\s)+*?,&]+)\s*//) { |
469 |
my $el = $factory-> |
470 |
create_element_ns |
471 |
|
472 |
( |
473 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dcmodel:' |
474 |
, 'terminal'); |
475 |
my $uri = $ns-> |
476 |
qname_to_uri |
477 |
|
478 |
($1, node => $ns); |
479 |
$el-> |
480 |
text_content |
481 |
($uri); |
482 |
$current-> |
483 |
append_child |
484 |
($el); |
485 |
$last = $el; |
486 |
} elsif ($s =~ s/^([+*?])\s*//) { |
487 |
if (defined $last) { |
488 |
$last-> |
489 |
set_attribute_ns |
490 |
( |
491 |
undef |
492 |
, 'occurence', $1); |
493 |
$last = |
494 |
undef |
495 |
; |
496 |
} |
497 |
} elsif ($s =~ s/^([|,&])\s*//) { |
498 |
$current-> |
499 |
set_attribute_ns |
500 |
( |
501 |
undef |
502 |
, 'connector', $1); |
503 |
$last = |
504 |
undef |
505 |
; |
506 |
} elsif ($s =~ s/^\(\s*//) { |
507 |
my $el = $factory-> |
508 |
create_element_ns |
509 |
|
510 |
( |
511 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dcmodel:' |
512 |
, 'group'); |
513 |
$current = $current-> |
514 |
append_child |
515 |
($el); |
516 |
$last = |
517 |
undef |
518 |
; |
519 |
} elsif ($s =~ s/^\)\s*//) { |
520 |
$last = $current; |
521 |
$current = $current-> |
522 |
parent_node |
523 |
; |
524 |
$current = $last unless defined $current; # error |
525 |
} else { |
526 |
last; # error |
527 |
} |
528 |
} |
529 |
} |
530 |
|
531 |
|
532 |
|
533 |
} |
534 |
|
535 |
|
536 |
;} |
537 |
|
538 |
; |
539 |
|
540 |
|
541 |
} |
542 |
$r} |
543 |
; |
544 |
sub HIERARCHY_REQUEST_ERR (); |
545 |
sub INVALID_SOURCE_ERR (); |
546 |
sub INVALID_STATE_ERR (); |
547 |
sub NOT_SUPPORTED_ERR (); |
548 |
sub AUTOLOAD { |
549 |
|
550 |
|
551 |
my $al = our $AUTOLOAD; |
552 |
$al =~ s/.+:://; |
553 |
if ({'HIERARCHY_REQUEST_ERR', |
554 |
'Message::Util::IF::DISException::HIERARCHY_REQUEST_ERR', |
555 |
'INVALID_SOURCE_ERR', |
556 |
'Message::Util::IF::DISException::INVALID_SOURCE_ERR', |
557 |
'INVALID_STATE_ERR', |
558 |
'Message::Util::IF::DISException::INVALID_STATE_ERR', |
559 |
'NOT_SUPPORTED_ERR', |
560 |
'Message::Util::IF::DISException::NOT_SUPPORTED_ERR'}->{$al}) { |
561 |
no strict 'refs'; |
562 |
*{$AUTOLOAD} = \&{{'HIERARCHY_REQUEST_ERR', |
563 |
'Message::Util::IF::DISException::HIERARCHY_REQUEST_ERR', |
564 |
'INVALID_SOURCE_ERR', |
565 |
'Message::Util::IF::DISException::INVALID_SOURCE_ERR', |
566 |
'INVALID_STATE_ERR', |
567 |
'Message::Util::IF::DISException::INVALID_STATE_ERR', |
568 |
'NOT_SUPPORTED_ERR', |
569 |
'Message::Util::IF::DISException::NOT_SUPPORTED_ERR'}->{$al}}; |
570 |
goto &{$AUTOLOAD}; |
571 |
} else { |
572 |
require Carp; |
573 |
Carp::croak (qq<Can't locate method "$AUTOLOAD">); |
574 |
} |
575 |
|
576 |
} |
577 |
sub import { |
578 |
|
579 |
|
580 |
my $self = shift; |
581 |
if (@_) { |
582 |
local $Exporter::ExportLevel = $Exporter::ExportLevel + 1; |
583 |
$self->SUPER::import (@_); |
584 |
for (grep {not /\W/} @_) { |
585 |
eval qq{$_}; |
586 |
} |
587 |
} |
588 |
|
589 |
} |
590 |
our %EXPORT_TAG = ('DISExceptionCode', |
591 |
['HIERARCHY_REQUEST_ERR', |
592 |
'INVALID_SOURCE_ERR', |
593 |
'INVALID_STATE_ERR', |
594 |
'NOT_SUPPORTED_ERR']); |
595 |
our @EXPORT_OK = ('HIERARCHY_REQUEST_ERR', |
596 |
'INVALID_SOURCE_ERR', |
597 |
'INVALID_STATE_ERR', |
598 |
'NOT_SUPPORTED_ERR'); |
599 |
use Exporter; push our @ISA, 'Exporter'; |
600 |
package Message::Util::IF::DISImplementation; |
601 |
our $VERSION = 20061231.0921; |
602 |
package Message::Util::DIS::ManakaiDISImplementation; |
603 |
our $VERSION = 20061231.0921; |
604 |
push our @ISA, 'Message::DOM::IF::DOMImplementation', |
605 |
'Message::DOM::IF::DOMImplementation', |
606 |
'Message::Util::IF::DISImplementation'; |
607 |
push @Message::DOM::DOMCore::ManakaiDOMImplementation::ISA, q<Message::Util::DIS::ManakaiDISImplementation> unless Message::DOM::DOMCore::ManakaiDOMImplementation->isa (q<Message::Util::DIS::ManakaiDISImplementation>); |
608 |
sub create_dis_parser ($) { |
609 |
my ($self) = @_; |
610 |
my $r; |
611 |
|
612 |
{ |
613 |
|
614 |
|
615 |
$r = bless $self-> |
616 |
create_swcfg_parser |
617 |
, |
618 |
|
619 |
'Message::Util::DIS::ManakaiDISParser' |
620 |
; |
621 |
|
622 |
|
623 |
} |
624 |
$r} |
625 |
sub create_dis_database ($) { |
626 |
my ($self) = @_; |
627 |
my $r; |
628 |
|
629 |
{ |
630 |
|
631 |
|
632 |
$r = bless { |
633 |
forDef => { |
634 |
|
635 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all' |
636 |
=> bless ({ |
637 |
uri => |
638 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all' |
639 |
, |
640 |
isa => { |
641 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all' |
642 |
=> 1}, |
643 |
revISA => {}, |
644 |
|
645 |
'r' |
646 |
=> 0, |
647 |
}, |
648 |
'Message::Util::DIS::ManakaiDISForDefinition' |
649 |
), |
650 |
}, |
651 |
resDef => {}, |
652 |
modDef => {}, |
653 |
seq => 0, |
654 |
}, |
655 |
'Message::Util::DIS::ManakaiDISDatabase' |
656 |
; |
657 |
$r->{forDef}->{ |
658 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all' |
659 |
}->{db} = $r; |
660 |
|
661 |
|
662 |
} |
663 |
$r} |
664 |
sub _camel_case_to_underscore_name ($$) { |
665 |
my ($self, $camelName) = @_; |
666 |
my $r = ''; |
667 |
|
668 |
{ |
669 |
|
670 |
|
671 |
$r = $camelName; |
672 |
$r =~ s/^([A-Z0-9]+)$/lc $1/ge; |
673 |
$r =~ s/([A-Z][A-Z0-9]*)$/"_".lc $1/ge; |
674 |
$r =~ s/([A-Z0-9])([A-Z0-9]*)([A-Z0-9])/$1.lc ($2)."_".lc $3/ge; |
675 |
$r =~ s/([A-Z])/"_".lc $1/ge; |
676 |
$r =~ s/(?=[0-9](?!$))/_/g; |
677 |
$r =~ tr/-/_/; |
678 |
|
679 |
|
680 |
} |
681 |
$r} |
682 |
$Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISImplementation>}->{has_feature} = {'', |
683 |
{'', |
684 |
'1'}, |
685 |
'http://suika.fam.cx/www/2006/feature/min', |
686 |
{'', |
687 |
'1', |
688 |
'3.0', |
689 |
'1'}, |
690 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#minimum', |
691 |
{'', |
692 |
'1', |
693 |
'3.0', |
694 |
'1'}, |
695 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core', |
696 |
{'', |
697 |
'1', |
698 |
'1.0', |
699 |
'1'}, |
700 |
'xml', |
701 |
{'', |
702 |
'1', |
703 |
'1.0', |
704 |
'1', |
705 |
'2.0', |
706 |
'1', |
707 |
'3.0', |
708 |
'1'}, |
709 |
'xmlversion', |
710 |
{'', |
711 |
'1', |
712 |
'1.0', |
713 |
'1', |
714 |
'1.1', |
715 |
'1'}}; |
716 |
$Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISImplementation>} = 12.1; |
717 |
package Message::Util::IF::DISParser; |
718 |
our $VERSION = 20061231.0921; |
719 |
package Message::Util::DIS::ManakaiDISParser; |
720 |
our $VERSION = 20061231.0921; |
721 |
push our @ISA, 'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGParser', |
722 |
'Message::Markup::IF::SWCFGParser', |
723 |
'Message::Util::IF::DISParser'; |
724 |
sub parse ($$) { |
725 |
my ($self, $input) = @_; |
726 |
my $r; |
727 |
|
728 |
{ |
729 |
|
730 |
|
731 |
{ |
732 |
|
733 |
local $Error::Depth = $Error::Depth + 1; |
734 |
|
735 |
{ |
736 |
|
737 |
|
738 |
|
739 |
$r = $self->SUPER::parse ($input) |
740 |
|
741 |
|
742 |
|
743 |
} |
744 |
|
745 |
|
746 |
;} |
747 |
|
748 |
; |
749 |
if (defined $r) { |
750 |
$r = bless $r, |
751 |
'Message::Util::DIS::ManakaiDISDocument' |
752 |
; |
753 |
$r-> |
754 |
default_element_type_namespace_uri |
755 |
|
756 |
( |
757 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--' |
758 |
); |
759 |
} |
760 |
|
761 |
|
762 |
} |
763 |
$r} |
764 |
$Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISParser>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core', |
765 |
{'', |
766 |
'1', |
767 |
'1.0', |
768 |
'1'}, |
769 |
'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core', |
770 |
{'', |
771 |
'1', |
772 |
'2.1', |
773 |
'1'}}; |
774 |
$Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISParser>} = 3.1; |
775 |
$Message::DOM::DOMLS::ParserClass{q<Message::Util::DIS::ManakaiDISParser>} = 1; |
776 |
package Message::Util::IF::DISNode; |
777 |
our $VERSION = 20061231.0921; |
778 |
package Message::Util::DIS::ManakaiDISNode; |
779 |
our $VERSION = 20061231.0921; |
780 |
push our @ISA, 'Message::Util::IF::DISNode'; |
781 |
use Message::Util::Error; |
782 |
sub lookup_namespace_prefix ($;$%) { |
783 |
my ($self, $namespaceURI, %opt) = @_; |
784 |
my $r; |
785 |
|
786 |
{ |
787 |
|
788 |
|
789 |
$r = |
790 |
undef |
791 |
; |
792 |
my $od = $self-> |
793 |
owner_document |
794 |
|| $self; |
795 |
my $binds = $od->{ |
796 |
'node' |
797 |
}->{ |
798 |
'swnsb' |
799 |
}; |
800 |
if (defined $namespaceURI) { |
801 |
FIND: { |
802 |
for my $prefix (keys %$binds) { |
803 |
if (defined $binds->{$prefix} and |
804 |
$binds->{$prefix} eq $namespaceURI) { |
805 |
$r = $prefix; |
806 |
last FIND; |
807 |
} |
808 |
} |
809 |
|
810 |
## From module list |
811 |
|
812 |
|
813 |
try {local $Error::Depth = $Error::Depth + 3; |
814 |
|
815 |
my |
816 |
$db = $self-> |
817 |
owner_dis_document |
818 |
|
819 |
-> |
820 |
dis_database |
821 |
; |
822 |
for my $mod_uri (keys %{$db->{modDef}}) { |
823 |
my $mod = $db-> |
824 |
get_module |
825 |
($mod_uri); |
826 |
my $mod_ln = $mod-> |
827 |
local_name |
828 |
; |
829 |
next if exists $binds->{$mod_ln}; |
830 |
my $ns_uri = $mod-> |
831 |
target_namespace_uri |
832 |
; |
833 |
$ns_uri = '' unless defined $ns_uri; |
834 |
if ($ns_uri eq $namespaceURI) { |
835 |
$r = $mod_ln; |
836 |
last FIND; |
837 |
} |
838 |
} |
839 |
} catch |
840 |
Message::Util::IF::DISException with |
841 |
{ |
842 |
my $err = shift; |
843 |
$err->throw |
844 |
unless $err->{ |
845 |
'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' |
846 |
} eq |
847 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_ASSOCIATED_DB_ERR' |
848 |
; |
849 |
}; |
850 |
|
851 |
last FIND unless $opt{make_new_binding}; |
852 |
## Not found |
853 |
if ($namespaceURI =~ /(\w+)$/) { |
854 |
my $prefix = $1; |
855 |
unless (exists $binds->{$prefix}) { |
856 |
$binds->{$prefix} = $namespaceURI; |
857 |
$r = $prefix; |
858 |
last FIND; |
859 |
} |
860 |
} |
861 |
my $i = 1; |
862 |
{ |
863 |
unless (exists $binds->{'ns'.$i}) { |
864 |
$binds->{$r = 'ns'.$i} = $namespaceURI; |
865 |
last FIND; |
866 |
} |
867 |
$i++; |
868 |
redo; |
869 |
} |
870 |
} # FIND |
871 |
} else { ## Null namespace |
872 |
FIND: { |
873 |
if (exists $binds->{'nu'.'ll'} and not defined $binds->{'nu'.'ll'}) { |
874 |
$r = 'nu'.'ll'; |
875 |
last FIND; |
876 |
} |
877 |
for my $prefix (keys %$binds) { |
878 |
if (not defined $prefix) { |
879 |
$r = $prefix; |
880 |
last FIND; |
881 |
} |
882 |
} |
883 |
last FIND unless $opt{make_new_binding}; |
884 |
## Not found |
885 |
my $i = ''; |
886 |
{ |
887 |
unless (exists $binds->{'nu'.'ll'.$i}) { |
888 |
$binds->{$r = 'nu'.'ll'.$i} = |
889 |
undef |
890 |
; |
891 |
last FIND; |
892 |
} |
893 |
$i++; |
894 |
redo; |
895 |
} |
896 |
} |
897 |
} |
898 |
|
899 |
|
900 |
} |
901 |
$r} |
902 |
sub lookup_namespace_uri ($$%) { |
903 |
my ($self, $prefix, %opt) = @_; |
904 |
my $r; |
905 |
|
906 |
{ |
907 |
|
908 |
my |
909 |
$od = $self-> |
910 |
owner_dis_document |
911 |
|| $self; |
912 |
my $binds = $od->{ |
913 |
'node' |
914 |
}->{ |
915 |
'swnsb' |
916 |
}; |
917 |
if (exists $binds->{$prefix}) { |
918 |
$r = $binds->{$prefix}; |
919 |
} else { |
920 |
## From module list |
921 |
FIND: { |
922 |
if ($od->{ |
923 |
'node' |
924 |
}->{ |
925 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#disNamespaceResolver' |
926 |
}) { |
927 |
$r = $od->{ |
928 |
'node' |
929 |
}->{ |
930 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#disNamespaceResolver' |
931 |
} |
932 |
->($prefix); |
933 |
last FIND if defined $r; |
934 |
} |
935 |
|
936 |
|
937 |
try {local $Error::Depth = $Error::Depth + 3; |
938 |
|
939 |
my |
940 |
$db = $od-> |
941 |
dis_database |
942 |
; |
943 |
for my $mod_uri (keys %{$db->{modDef}}) { |
944 |
my $mod = $db-> |
945 |
get_module |
946 |
($mod_uri); |
947 |
if ($mod-> |
948 |
local_name |
949 |
eq |
950 |
$prefix) { |
951 |
$r = $mod-> |
952 |
target_namespace_uri |
953 |
; |
954 |
last FIND; |
955 |
} |
956 |
} |
957 |
} catch |
958 |
Message::Util::IF::DISException with |
959 |
{ |
960 |
my $err = shift; |
961 |
$err->throw |
962 |
unless $err->{ |
963 |
'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' |
964 |
} eq |
965 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_ASSOCIATED_DB_ERR' |
966 |
; |
967 |
}; |
968 |
if ($opt{make_new_binding}) { |
969 |
$r = $binds->{$prefix} = $prefix; |
970 |
} elsif ($opt{raise_prefix_exception}) { |
971 |
|
972 |
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::Util::DIS::ManakaiDISNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'prefix'; |
973 |
|
974 |
; |
975 |
} else { |
976 |
$r = |
977 |
undef |
978 |
; |
979 |
} |
980 |
} # FIND |
981 |
} |
982 |
|
983 |
|
984 |
} |
985 |
$r} |
986 |
sub _get_node_reference ($$) { |
987 |
my ($self, $object) = @_; |
988 |
my $r; |
989 |
|
990 |
{ |
991 |
|
992 |
my |
993 |
$class; |
994 |
if ($object->{ |
995 |
'swnt' |
996 |
} eq '#element') { |
997 |
$class = |
998 |
'Message::Util::DIS::ManakaiDISElement' |
999 |
; |
1000 |
} elsif ($object->{ |
1001 |
'swnt' |
1002 |
} eq '#comment') { |
1003 |
$class = |
1004 |
'Message::Util::DIS::ManakaiDISComment' |
1005 |
; |
1006 |
} elsif ($object->{ |
1007 |
'swnt' |
1008 |
} eq '#document') { |
1009 |
$class = |
1010 |
'Message::Util::DIS::ManakaiDISDocument' |
1011 |
; |
1012 |
} elsif ($object->{ |
1013 |
'swnt' |
1014 |
} eq '#fragment') { |
1015 |
$class = |
1016 |
'Message::Util::DIS::ManakaiDISDocumentFragment' |
1017 |
; |
1018 |
} else { |
1019 |
|
1020 |
|
1021 |
; |
1022 |
} |
1023 |
|
1024 |
|
1025 |
{ |
1026 |
|
1027 |
|
1028 |
$object->{ |
1029 |
'rc' |
1030 |
}++; |
1031 |
${$object->{ |
1032 |
'grc' |
1033 |
}}++; |
1034 |
$r = bless { |
1035 |
|
1036 |
'node' |
1037 |
=> $object, |
1038 |
}, $class; |
1039 |
|
1040 |
|
1041 |
} |
1042 |
|
1043 |
; |
1044 |
|
1045 |
|
1046 |
} |
1047 |
$r} |
1048 |
sub owner_dis_document ($;$) { |
1049 |
if (@_ == 1) {my ($self) = @_; |
1050 |
my $r; |
1051 |
|
1052 |
{ |
1053 |
|
1054 |
|
1055 |
$r = |
1056 |
Message::Util::DIS::ManakaiDISNode->_get_node_reference |
1057 |
|
1058 |
($self->{ |
1059 |
'node' |
1060 |
}->{ |
1061 |
'swod' |
1062 |
}) |
1063 |
if $self->{ |
1064 |
'node' |
1065 |
}->{ |
1066 |
'swod' |
1067 |
}; |
1068 |
|
1069 |
|
1070 |
} |
1071 |
$r; |
1072 |
} else {my ($self) = @_; |
1073 |
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::Util::DIS::ManakaiDISNode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'owner_dis_document'; |
1074 |
} |
1075 |
} |
1076 |
$Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISNode>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core', |
1077 |
{'', |
1078 |
'1', |
1079 |
'1.0', |
1080 |
'1'}}; |
1081 |
$Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISNode>} = 1; |
1082 |
package Message::Util::IF::NSResolverDIS; |
1083 |
our $VERSION = 20061231.0921; |
1084 |
package Message::Util::DIS::ManakaiNSResolverDIS; |
1085 |
our $VERSION = 20061231.0921; |
1086 |
push our @ISA, 'Message::Util::IF::NSResolverDIS'; |
1087 |
sub prefix_to_uri ($;$%) { |
1088 |
my ($self, $prefix, %opt) = @_; |
1089 |
my $r; |
1090 |
|
1091 |
{ |
1092 |
|
1093 |
if |
1094 |
(defined $prefix) { |
1095 |
|
1096 |
|
1097 |
{ |
1098 |
|
1099 |
local $Error::Depth = $Error::Depth + 1; |
1100 |
|
1101 |
{ |
1102 |
|
1103 |
|
1104 |
|
1105 |
$r = $self-> |
1106 |
lookup_namespace_uri |
1107 |
($prefix); |
1108 |
|
1109 |
|
1110 |
|
1111 |
} |
1112 |
|
1113 |
|
1114 |
;} |
1115 |
|
1116 |
; |
1117 |
unless (defined $r) { |
1118 |
|
1119 |
report Message::Markup::SuikaWikiConfig21::ManakaiSWCFGException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $opt{node}, '-type' => 'NAMESPACE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'prefix_to_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::Util::DIS::ManakaiNSResolverDIS', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'prefix'; |
1120 |
|
1121 |
; |
1122 |
} |
1123 |
} elsif (defined $self->{ |
1124 |
'node' |
1125 |
} |
1126 |
->{ |
1127 |
'dns' |
1128 |
}) { |
1129 |
$r = $self->{ |
1130 |
'node' |
1131 |
}->{ |
1132 |
'dns' |
1133 |
}; |
1134 |
} else { ## Default namespace |
1135 |
|
1136 |
|
1137 |
{ |
1138 |
|
1139 |
local $Error::Depth = $Error::Depth + 1; |
1140 |
|
1141 |
{ |
1142 |
|
1143 |
|
1144 |
|
1145 |
$r = ($self-> |
1146 |
owner_dis_document |
1147 |
|| $self) |
1148 |
-> |
1149 |
module_element |
1150 |
|
1151 |
-> |
1152 |
defining_namespace_uri |
1153 |
; |
1154 |
|
1155 |
|
1156 |
|
1157 |
} |
1158 |
|
1159 |
|
1160 |
;} |
1161 |
|
1162 |
; |
1163 |
} |
1164 |
|
1165 |
|
1166 |
} |
1167 |
$r} |
1168 |
sub qname_to_uri ($$%) { |
1169 |
my ($self, $qname, %opt) = @_; |
1170 |
my $r; |
1171 |
|
1172 |
{ |
1173 |
|
1174 |
|
1175 |
$qname =~ s/^\s+//; $qname =~ s/\s+$//; |
1176 |
my ($prefix, $lname) = split /\s*[:|]\s*/, $qname, 2; |
1177 |
|
1178 |
|
1179 |
{ |
1180 |
|
1181 |
local $Error::Depth = $Error::Depth + 1; |
1182 |
|
1183 |
{ |
1184 |
|
1185 |
|
1186 |
if |
1187 |
(defined $lname) { |
1188 |
$r = $self-> |
1189 |
prefix_to_uri |
1190 |
($prefix) . $lname; |
1191 |
} else { ## In default namespace |
1192 |
if (defined $opt{default_namespace_uri}) { |
1193 |
$r = $opt{default_namespace_uri} . $prefix; |
1194 |
} else { |
1195 |
$r = $self-> |
1196 |
prefix_to_uri |
1197 |
( |
1198 |
undef |
1199 |
) . $prefix; |
1200 |
} |
1201 |
} |
1202 |
|
1203 |
|
1204 |
|
1205 |
} |
1206 |
|
1207 |
|
1208 |
;} |
1209 |
|
1210 |
; |
1211 |
|
1212 |
|
1213 |
} |
1214 |
$r} |
1215 |
sub qname_to_pair ($$%) { |
1216 |
my ($self, $qname, %opt) = @_; |
1217 |
my $r = []; |
1218 |
|
1219 |
{ |
1220 |
|
1221 |
|
1222 |
$qname =~ s/^\s+//; $qname =~ s/\s+$//; |
1223 |
my ($prefix, $lname) = split /\s*[:|]\s*/, $qname, 2; |
1224 |
|
1225 |
|
1226 |
{ |
1227 |
|
1228 |
local $Error::Depth = $Error::Depth + 1; |
1229 |
|
1230 |
{ |
1231 |
|
1232 |
|
1233 |
if |
1234 |
(defined $lname) { |
1235 |
$r = [$self-> |
1236 |
prefix_to_uri |
1237 |
($prefix), $lname]; |
1238 |
} else { ## In default namespace |
1239 |
$r = [$self-> |
1240 |
prefix_to_uri |
1241 |
( |
1242 |
undef |
1243 |
), $prefix]; |
1244 |
} |
1245 |
|
1246 |
|
1247 |
|
1248 |
} |
1249 |
|
1250 |
|
1251 |
;} |
1252 |
|
1253 |
; |
1254 |
|
1255 |
|
1256 |
} |
1257 |
$r} |
1258 |
sub tfpqnames_to_uri ($$;$%) { |
1259 |
my ($self, $tfpqnames, $defaultTypeURI, %opt) = @_; |
1260 |
my $r = ''; |
1261 |
|
1262 |
{ |
1263 |
|
1264 |
my |
1265 |
($typeq, undef, @forpq) = split /\s*[:|][:|]\s*/, $tfpqnames; |
1266 |
my ($typeURI); |
1267 |
my $forpURI = []; |
1268 |
|
1269 |
|
1270 |
{ |
1271 |
|
1272 |
local $Error::Depth = $Error::Depth + 1; |
1273 |
|
1274 |
{ |
1275 |
|
1276 |
|
1277 |
|
1278 |
$typeURI = $typeq eq '' |
1279 |
? defined $defaultTypeURI ? $defaultTypeURI |
1280 |
: |
1281 |
'http://suika.fam.cx/~wakaba/archive/2004/dom/main#any' |
1282 |
: |
1283 |
$self-> |
1284 |
qname_to_uri |
1285 |
($typeq, %opt); |
1286 |
for my $forpq (@forpq) { |
1287 |
push @$forpURI, $self-> |
1288 |
qname_to_uri |
1289 |
|
1290 |
($forpq, %opt); |
1291 |
} |
1292 |
|
1293 |
|
1294 |
|
1295 |
} |
1296 |
|
1297 |
|
1298 |
;} |
1299 |
|
1300 |
; |
1301 |
|
1302 |
|
1303 |
{ |
1304 |
|
1305 |
if |
1306 |
(@{$forpURI} == 0) { |
1307 |
$r = $typeURI; |
1308 |
} else { |
1309 |
my $__turi = $typeURI; |
1310 |
my $__furi = |
1311 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all' |
1312 |
; |
1313 |
for my $__uri ($__turi, $__furi) { |
1314 |
$__uri =~ s{([^0-9A-Za-z!\$'()*,:;=?\@_./~-])}{sprintf '%%%02X', ord $1}ge; |
1315 |
} |
1316 |
my @__fp; |
1317 |
for my $__uri (@{$forpURI}) { |
1318 |
my $__fpuri = $__uri; |
1319 |
$__fpuri =~ s{([^0-9A-Za-z!\$'()*,:;=?\@_./~-])} |
1320 |
{sprintf '%%%02X', ord $1}ge; |
1321 |
push @__fp, $__fpuri; |
1322 |
} |
1323 |
$r = qq<tag:suika.fam.cx,2005-09:$__turi+$__furi+>.join ('+', @__fp); |
1324 |
} |
1325 |
|
1326 |
|
1327 |
} |
1328 |
|
1329 |
; |
1330 |
|
1331 |
|
1332 |
} |
1333 |
$r} |
1334 |
$Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiNSResolverDIS>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core', |
1335 |
{'', |
1336 |
'1', |
1337 |
'1.0', |
1338 |
'1'}}; |
1339 |
$Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiNSResolverDIS>} = 1; |
1340 |
package Message::Util::IF::DISElement; |
1341 |
our $VERSION = 20061231.0921; |
1342 |
package Message::Util::DIS::ManakaiDISElement; |
1343 |
our $VERSION = 20061231.0921; |
1344 |
push our @ISA, 'Message::Util::DIS::ManakaiNSResolverDIS', |
1345 |
'Message::Util::DIS::ManakaiDISNode', |
1346 |
'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGElement', |
1347 |
'Message::Util::DIS::Perl::ManakaiDISElementPerl', |
1348 |
'Message::Util::IF::DISElement'; |
1349 |
sub for_match ($$;$%) { |
1350 |
my ($self, $forArg, $forpArg, %opt) = @_; |
1351 |
my $r = 0; |
1352 |
|
1353 |
{ |
1354 |
|
1355 |
|
1356 |
$forpArg ||= []; |
1357 |
|
1358 |
FORMATCH: { |
1359 |
|
1360 |
|
1361 |
{ |
1362 |
|
1363 |
local $Error::Depth = $Error::Depth + 1; |
1364 |
|
1365 |
{ |
1366 |
|
1367 |
|
1368 |
my |
1369 |
$for_res = ($opt{database_arg} ||= |
1370 |
$self-> |
1371 |
owner_dis_document |
1372 |
|
1373 |
-> |
1374 |
dis_database |
1375 |
) |
1376 |
->get_for ( |
1377 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all' |
1378 |
); |
1379 |
my $forp_res = [map { |
1380 |
$opt{database_arg}-> |
1381 |
get_for |
1382 |
($_) |
1383 |
} @{$forpArg}]; |
1384 |
|
1385 |
my @ce = @{$self-> |
1386 |
dis_all_child_elements |
1387 |
}; |
1388 |
for my $ce (@ce) { |
1389 |
my $et = $ce-> |
1390 |
expanded_uri |
1391 |
; |
1392 |
if ($et eq |
1393 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ForCheck' |
1394 |
) { |
1395 |
my $fors = [split /\s+/, $ce-> |
1396 |
value |
1397 |
]; |
1398 |
FCs: for my $f (@$fors) { |
1399 |
if ($f =~ /^!=(.+)$/) { ## -- NOT EQUAL TO |
1400 |
my $uri = $self-> |
1401 |
qname_to_uri |
1402 |
($1); |
1403 |
my $for = $opt{database_arg}-> |
1404 |
get_for |
1405 |
($uri); |
1406 |
$for-> |
1407 |
is_referred |
1408 |
($ce); |
1409 |
for my $arg_res ($for_res, @{$forp_res}) { |
1410 |
if ($arg_res eq $for) { |
1411 |
$r = |
1412 |
0 |
1413 |
; |
1414 |
last FORMATCH; |
1415 |
} |
1416 |
} |
1417 |
} elsif ($f =~ /^!(.+)$/) { ## -- NOT ISA |
1418 |
my $uri = $self-> |
1419 |
qname_to_uri |
1420 |
($1); |
1421 |
my $for = $opt{database_arg}-> |
1422 |
get_for |
1423 |
($uri); |
1424 |
$for-> |
1425 |
is_referred |
1426 |
($ce); |
1427 |
for my $arg_res ($for_res, @{$forp_res}) { |
1428 |
if ($arg_res-> |
1429 |
isa_uri |
1430 |
($uri)) { |
1431 |
$r = |
1432 |
0 |
1433 |
; |
1434 |
last FORMATCH; |
1435 |
} |
1436 |
} |
1437 |
} elsif ($f =~ /^=(.+)$/) { ## -- EQUAL TO |
1438 |
my $uri = $self-> |
1439 |
qname_to_uri |
1440 |
($1); |
1441 |
my $for = $opt{database_arg}-> |
1442 |
get_for |
1443 |
($uri); |
1444 |
$for-> |
1445 |
is_referred |
1446 |
($ce); |
1447 |
for my $arg_res ($for_res, @{$forp_res}) { |
1448 |
if ($arg_res eq $for) { |
1449 |
next FCs; |
1450 |
} |
1451 |
} |
1452 |
$r = |
1453 |
0 |
1454 |
; |
1455 |
last FORMATCH; |
1456 |
} else { ## -- ISA |
1457 |
my $uri = $self-> |
1458 |
qname_to_uri |
1459 |
($f); |
1460 |
my $for = $opt{database_arg}-> |
1461 |
get_for |
1462 |
($uri); |
1463 |
$for-> |
1464 |
is_referred |
1465 |
($ce); |
1466 |
for my $arg_res ($for_res, @{$forp_res}) { |
1467 |
if ($arg_res-> |
1468 |
isa_uri |
1469 |
($uri)) { |
1470 |
next FCs; |
1471 |
} |
1472 |
} |
1473 |
$r = |
1474 |
0 |
1475 |
; |
1476 |
last FORMATCH; |
1477 |
} |
1478 |
} # FCs |
1479 |
} # dis:ForCheck |
1480 |
} # children |
1481 |
|
1482 |
$r = 1; |
1483 |
|
1484 |
|
1485 |
|
1486 |
} |
1487 |
|
1488 |
|
1489 |
;} |
1490 |
|
1491 |
; |
1492 |
} # FORMATCH |
1493 |
|
1494 |
|
1495 |
} |
1496 |
$r} |
1497 |
sub media_type_match ($$;$%) { |
1498 |
my ($self, $mediaType, $defaultMediaType, %opt) = @_; |
1499 |
my $r = 0; |
1500 |
|
1501 |
{ |
1502 |
|
1503 |
if |
1504 |
(defined $mediaType) { |
1505 |
|
1506 |
|
1507 |
{ |
1508 |
|
1509 |
local $Error::Depth = $Error::Depth + 1; |
1510 |
|
1511 |
{ |
1512 |
|
1513 |
|
1514 |
my |
1515 |
$ctn = $self-> |
1516 |
get_attribute_ns |
1517 |
|
1518 |
( |
1519 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--' |
1520 |
, 'ContentType'); |
1521 |
my $ct; |
1522 |
$ct = $ctn-> |
1523 |
qname_value_uri if |
1524 |
$ctn; |
1525 |
$ct = $defaultMediaType unless defined $ct; |
1526 |
my $res = $self-> |
1527 |
owner_dis_document |
1528 |
|
1529 |
-> |
1530 |
dis_database |
1531 |
|
1532 |
-> |
1533 |
get_resource |
1534 |
($ct); |
1535 |
$res-> |
1536 |
is_referred |
1537 |
($ctn or $self); |
1538 |
unless ($res-> |
1539 |
is_subset_of_uri |
1540 |
($mediaType)) { |
1541 |
$r = |
1542 |
0 |
1543 |
; |
1544 |
} else { |
1545 |
$r = |
1546 |
1 |
1547 |
; |
1548 |
} |
1549 |
|
1550 |
|
1551 |
|
1552 |
} |
1553 |
|
1554 |
|
1555 |
;} |
1556 |
|
1557 |
; |
1558 |
} else { |
1559 |
$r = |
1560 |
1 |
1561 |
; |
1562 |
} |
1563 |
|
1564 |
|
1565 |
} |
1566 |
$r} |
1567 |
sub media_type_uri ($%) { |
1568 |
my ($self, %opt) = @_; |
1569 |
my $r; |
1570 |
|
1571 |
{ |
1572 |
|
1573 |
|
1574 |
{ |
1575 |
|
1576 |
local $Error::Depth = $Error::Depth + 1; |
1577 |
|
1578 |
{ |
1579 |
|
1580 |
|
1581 |
|
1582 |
$r = $opt{default_media_type}; |
1583 |
my $ctn = $self-> |
1584 |
get_attribute_ns |
1585 |
|
1586 |
( |
1587 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--' |
1588 |
, 'ContentType'); |
1589 |
$r = $ctn-> |
1590 |
qname_value_uri if |
1591 |
$ctn; |
1592 |
|
1593 |
|
1594 |
|
1595 |
} |
1596 |
|
1597 |
|
1598 |
;} |
1599 |
|
1600 |
; |
1601 |
|
1602 |
|
1603 |
} |
1604 |
$r} |
1605 |
sub dis_get_attribute ($$%) { |
1606 |
my ($self, $attrName, %opt) = @_; |
1607 |
my $r; |
1608 |
|
1609 |
{ |
1610 |
|
1611 |
C: |
1612 |
for my $c (@{$self-> |
1613 |
dis_child_elements |
1614 |
|
1615 |
(forp_arg => $opt{forp_arg}, |
1616 |
database_arg => $opt{database_arg})}) { |
1617 |
if ($c-> |
1618 |
expanded_uri eq |
1619 |
$attrName and |
1620 |
$c-> |
1621 |
media_type_match |
1622 |
|
1623 |
($opt{media_type}, $opt{default_media_type}, |
1624 |
database_arg => $opt{database_arg})) { |
1625 |
$r = $c; |
1626 |
last C; |
1627 |
} |
1628 |
} |
1629 |
|
1630 |
|
1631 |
} |
1632 |
$r} |
1633 |
sub dis_get_attribute_list ($$%) { |
1634 |
my ($self, $attrName, %opt) = @_; |
1635 |
my $r; |
1636 |
|
1637 |
{ |
1638 |
|
1639 |
|
1640 |
$r = bless [], |
1641 |
'Message::Util::DIS::ManakaiDISElementList' |
1642 |
; |
1643 |
for my $c (@{$self-> |
1644 |
dis_child_elements |
1645 |
|
1646 |
(forp_arg => $opt{forp_arg}, |
1647 |
database_arg => $opt{database_arg})}) { |
1648 |
if ($c-> |
1649 |
expanded_uri eq |
1650 |
$attrName and |
1651 |
$c-> |
1652 |
media_type_match |
1653 |
|
1654 |
($opt{media_type}, $opt{default_media_type}, |
1655 |
database_arg => $opt{database_arg})) { |
1656 |
push @$r, $c; |
1657 |
} |
1658 |
} |
1659 |
|
1660 |
|
1661 |
} |
1662 |
$r} |
1663 |
sub dis_child_elements ($%) { |
1664 |
my ($self, %opt) = @_; |
1665 |
my $r; |
1666 |
|
1667 |
{ |
1668 |
|
1669 |
|
1670 |
$r = bless [], |
1671 |
'Message::Util::DIS::ManakaiDISElementList' |
1672 |
; |
1673 |
|
1674 |
|
1675 |
{ |
1676 |
|
1677 |
local $Error::Depth = $Error::Depth + 1; |
1678 |
|
1679 |
{ |
1680 |
|
1681 |
|
1682 |
C: |
1683 |
for my $cn (@{$self-> |
1684 |
child_nodes |
1685 |
}) { |
1686 |
## $cn is an #element. |
1687 |
my $dn; |
1688 |
|
1689 |
|
1690 |
{ |
1691 |
|
1692 |
|
1693 |
$cn->{'node'}->{ |
1694 |
'rc' |
1695 |
}++; |
1696 |
${$cn->{'node'}->{ |
1697 |
'grc' |
1698 |
}}++; |
1699 |
$dn = bless { |
1700 |
|
1701 |
'node' |
1702 |
=> $cn->{'node'}, |
1703 |
}, 'Message::Util::DIS::ManakaiDISElement'; |
1704 |
|
1705 |
|
1706 |
} |
1707 |
|
1708 |
; |
1709 |
next C unless $dn-> |
1710 |
for_match |
1711 |
|
1712 |
(undef, $opt{forp_arg}, |
1713 |
database_arg => $opt{database_arg}); |
1714 |
push @$r, $dn; |
1715 |
} |
1716 |
|
1717 |
|
1718 |
|
1719 |
} |
1720 |
|
1721 |
|
1722 |
;} |
1723 |
|
1724 |
; |
1725 |
|
1726 |
|
1727 |
} |
1728 |
$r} |
1729 |
sub dis_all_child_elements ($) { |
1730 |
my ($self) = @_; |
1731 |
my $r; |
1732 |
|
1733 |
{ |
1734 |
|
1735 |
|
1736 |
$r = bless [], |
1737 |
'Message::Util::DIS::ManakaiDISElementList' |
1738 |
; |
1739 |
|
1740 |
|
1741 |
{ |
1742 |
|
1743 |
local $Error::Depth = $Error::Depth + 1; |
1744 |
|
1745 |
{ |
1746 |
|
1747 |
|
1748 |
for |
1749 |
my $cn (@{$self-> |
1750 |
child_nodes |
1751 |
}) { |
1752 |
## $cn is an #element. |
1753 |
my $dn; |
1754 |
|
1755 |
|
1756 |
{ |
1757 |
|
1758 |
|
1759 |
$cn->{'node'}->{ |
1760 |
'rc' |
1761 |
}++; |
1762 |
${$cn->{'node'}->{ |
1763 |
'grc' |
1764 |
}}++; |
1765 |
$dn = bless { |
1766 |
|
1767 |
'node' |
1768 |
=> $cn->{'node'}, |
1769 |
}, 'Message::Util::DIS::ManakaiDISElement'; |
1770 |
|
1771 |
|
1772 |
} |
1773 |
|
1774 |
; |
1775 |
push @$r, $dn; |
1776 |
} |
1777 |
|
1778 |
|
1779 |
|
1780 |
} |
1781 |
|
1782 |
|
1783 |
;} |
1784 |
|
1785 |
; |
1786 |
|
1787 |
|
1788 |
} |
1789 |
$r} |
1790 |
sub qname_value_uri ($;$) { |
1791 |
if (@_ == 1) {my ($self) = @_; |
1792 |
my $r; |
1793 |
|
1794 |
{ |
1795 |
|
1796 |
|
1797 |
{ |
1798 |
|
1799 |
local $Error::Depth = $Error::Depth + 1; |
1800 |
|
1801 |
{ |
1802 |
|
1803 |
|
1804 |
my |
1805 |
$v = $self-> |
1806 |
value |
1807 |
; |
1808 |
if (defined $v and not ref $v eq 'ARRAY') { |
1809 |
$r = $self-> |
1810 |
qname_to_uri |
1811 |
($v, node => $self); |
1812 |
} else { |
1813 |
$r = |
1814 |
undef |
1815 |
; |
1816 |
} |
1817 |
|
1818 |
|
1819 |
|
1820 |
} |
1821 |
|
1822 |
|
1823 |
;} |
1824 |
|
1825 |
; |
1826 |
|
1827 |
|
1828 |
} |
1829 |
$r; |
1830 |
} else {my ($self) = @_; |
1831 |
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::Util::DIS::ManakaiDISElement', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'qname_value_uri'; |
1832 |
} |
1833 |
} |
1834 |
sub qname_value_local_name ($;$) { |
1835 |
if (@_ == 1) {my ($self) = @_; |
1836 |
my $r; |
1837 |
|
1838 |
{ |
1839 |
|
1840 |
|
1841 |
{ |
1842 |
|
1843 |
local $Error::Depth = $Error::Depth + 1; |
1844 |
|
1845 |
{ |
1846 |
|
1847 |
|
1848 |
my |
1849 |
$v = $self-> |
1850 |
value |
1851 |
; |
1852 |
if (defined $v and not ref $v eq 'ARRAY') { |
1853 |
my ($n, $v) = split /\s*[:|]\s*/, $v, 2; |
1854 |
$r = defined $v ? $v : $n; |
1855 |
} else { |
1856 |
$r = |
1857 |
undef |
1858 |
; |
1859 |
} |
1860 |
|
1861 |
|
1862 |
|
1863 |
} |
1864 |
|
1865 |
|
1866 |
;} |
1867 |
|
1868 |
; |
1869 |
|
1870 |
|
1871 |
} |
1872 |
$r; |
1873 |
} else {my ($self) = @_; |
1874 |
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::Util::DIS::ManakaiDISElement', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'qname_value_local_name'; |
1875 |
} |
1876 |
} |
1877 |
sub qname_value_prefix ($;$) { |
1878 |
if (@_ == 1) {my ($self) = @_; |
1879 |
my $r; |
1880 |
|
1881 |
{ |
1882 |
|
1883 |
|
1884 |
{ |
1885 |
|
1886 |
local $Error::Depth = $Error::Depth + 1; |
1887 |
|
1888 |
{ |
1889 |
|
1890 |
|
1891 |
my |
1892 |
$v = $self-> |
1893 |
value |
1894 |
; |
1895 |
if (defined $v and not ref $v eq 'ARRAY') { |
1896 |
my ($p, $l) = split /\s*[:|]\s*/, $v, 2; |
1897 |
$r = defined $l ? $p : |
1898 |
undef |
1899 |
; |
1900 |
} else { |
1901 |
$r = |
1902 |
undef |
1903 |
; |
1904 |
} |
1905 |
|
1906 |
|
1907 |
|
1908 |
} |
1909 |
|
1910 |
|
1911 |
;} |
1912 |
|
1913 |
; |
1914 |
|
1915 |
|
1916 |
} |
1917 |
$r; |
1918 |
} else {my ($self) = @_; |
1919 |
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::Util::DIS::ManakaiDISElement', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'qname_value_prefix'; |
1920 |
} |
1921 |
} |
1922 |
sub qname_value_namespace_uri ($;$) { |
1923 |
if (@_ == 1) {my ($self) = @_; |
1924 |
my $r; |
1925 |
|
1926 |
{ |
1927 |
|
1928 |
|
1929 |
{ |
1930 |
|
1931 |
local $Error::Depth = $Error::Depth + 1; |
1932 |
|
1933 |
{ |
1934 |
|
1935 |
|
1936 |
my |
1937 |
$v = $self-> |
1938 |
value |
1939 |
; |
1940 |
if (defined $v and not ref $v eq 'ARRAY') { |
1941 |
my ($p, $v) = split /\s*[:|]\s*/, $v, 2; |
1942 |
$r = $self-> |
1943 |
prefix_to_uri |
1944 |
|
1945 |
(defined $v ? $p : |
1946 |
undef |
1947 |
); |
1948 |
} else { |
1949 |
$r = |
1950 |
undef |
1951 |
; |
1952 |
} |
1953 |
|
1954 |
|
1955 |
|
1956 |
} |
1957 |
|
1958 |
|
1959 |
;} |
1960 |
|
1961 |
; |
1962 |
|
1963 |
|
1964 |
} |
1965 |
$r; |
1966 |
} else {my ($self) = @_; |
1967 |
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::Util::DIS::ManakaiDISElement', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'qname_value_namespace_uri'; |
1968 |
} |
1969 |
} |
1970 |
sub tfqnames_value_uri ($;$) { |
1971 |
my ($self, $defaultTypeURI) = @_; |
1972 |
my $r; |
1973 |
|
1974 |
{ |
1975 |
|
1976 |
my |
1977 |
$v = $self-> |
1978 |
value |
1979 |
; |
1980 |
if (defined $v and not ref $v eq 'ARRAY') { |
1981 |
|
1982 |
|
1983 |
{ |
1984 |
|
1985 |
local $Error::Depth = $Error::Depth + 1; |
1986 |
|
1987 |
{ |
1988 |
|
1989 |
|
1990 |
|
1991 |
$r = $self-> |
1992 |
tfpqnames_to_uri |
1993 |
|
1994 |
($v, $defaultTypeURI, |
1995 |
node => $self); |
1996 |
|
1997 |
|
1998 |
|
1999 |
} |
2000 |
|
2001 |
|
2002 |
;} |
2003 |
|
2004 |
; |
2005 |
} else { |
2006 |
$r = |
2007 |
undef |
2008 |
; |
2009 |
} |
2010 |
|
2011 |
|
2012 |
} |
2013 |
$r} |
2014 |
sub element_type_match ($$%) { |
2015 |
my ($self, $etype, %opt) = @_; |
2016 |
my $r = 0; |
2017 |
|
2018 |
{ |
2019 |
|
2020 |
|
2021 |
{ |
2022 |
|
2023 |
local $Error::Depth = $Error::Depth + 1; |
2024 |
|
2025 |
{ |
2026 |
|
2027 |
|
2028 |
my |
2029 |
$et = $self->expanded_uri; |
2030 |
my $rdef = $self-> |
2031 |
owner_dis_document |
2032 |
|
2033 |
-> |
2034 |
dis_database |
2035 |
|
2036 |
-> |
2037 |
get_resource |
2038 |
($et); |
2039 |
$r = $rdef-> |
2040 |
is_subset_of_uri |
2041 |
|
2042 |
($etype, srinfo => $opt{srinfo}); |
2043 |
|
2044 |
|
2045 |
|
2046 |
} |
2047 |
|
2048 |
|
2049 |
;} |
2050 |
|
2051 |
; |
2052 |
|
2053 |
|
2054 |
} |
2055 |
$r} |
2056 |
sub is_resource_element ($;$) { |
2057 |
if (@_ == 1) {my ($self) = @_; |
2058 |
my $r = 0; |
2059 |
|
2060 |
{ |
2061 |
|
2062 |
|
2063 |
{ |
2064 |
|
2065 |
local $Error::Depth = $Error::Depth + 1; |
2066 |
|
2067 |
{ |
2068 |
|
2069 |
|
2070 |
|
2071 |
$r = ($self-> |
2072 |
expanded_uri eq |
2073 |
|
2074 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ResourceDef' |
2075 |
); |
2076 |
|
2077 |
|
2078 |
|
2079 |
} |
2080 |
|
2081 |
|
2082 |
;} |
2083 |
|
2084 |
; |
2085 |
|
2086 |
|
2087 |
} |
2088 |
$r; |
2089 |
} else {my ($self) = @_; |
2090 |
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::Util::DIS::ManakaiDISElement', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'is_resource_element'; |
2091 |
} |
2092 |
} |
2093 |
sub is_property_element ($%) { |
2094 |
my ($self, %opt) = @_; |
2095 |
my $r = 0; |
2096 |
|
2097 |
{ |
2098 |
|
2099 |
|
2100 |
{ |
2101 |
|
2102 |
local $Error::Depth = $Error::Depth + 1; |
2103 |
|
2104 |
{ |
2105 |
|
2106 |
|
2107 |
my |
2108 |
$xn = $self-> |
2109 |
expanded_uri |
2110 |
; |
2111 |
if ($xn eq |
2112 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#resourceType' or |
2113 |
$xn eq |
2114 |
'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' |
2115 |
) { |
2116 |
$r = |
2117 |
1 |
2118 |
; |
2119 |
} else { |
2120 |
my $rdef = ($opt{database_arg} or |
2121 |
$self-> |
2122 |
owner_dis_document |
2123 |
|
2124 |
-> |
2125 |
dis_database |
2126 |
) |
2127 |
-> |
2128 |
get_resource |
2129 |
($xn); |
2130 |
$r = $rdef-> |
2131 |
is_type_uri |
2132 |
|
2133 |
( |
2134 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Source#Property' |
2135 |
) || |
2136 |
$rdef-> |
2137 |
is_type_uri |
2138 |
( |
2139 |
'http://www.w3.org/1999/02/22-rdf-syntax-ns#Property' |
2140 |
); |
2141 |
## TODO: Remove this. |
2142 |
} |
2143 |
|
2144 |
|
2145 |
|
2146 |
} |
2147 |
|
2148 |
|
2149 |
;} |
2150 |
|
2151 |
; |
2152 |
|
2153 |
|
2154 |
} |
2155 |
$r} |
2156 |
sub unlink_from_document ($$) { |
2157 |
my ($self, $databaseArg) = @_; |
2158 |
|
2159 |
{ |
2160 |
|
2161 |
|
2162 |
{ |
2163 |
|
2164 |
local $Error::Depth = $Error::Depth + 1; |
2165 |
|
2166 |
{ |
2167 |
|
2168 |
|
2169 |
my |
2170 |
$ods = $self->{ |
2171 |
'node' |
2172 |
}->{ |
2173 |
'swod' |
2174 |
}; |
2175 |
$self->{ |
2176 |
'node' |
2177 |
}->{ |
2178 |
'swnsb' |
2179 |
} |
2180 |
= $self-> |
2181 |
get_namespace_binding_list |
2182 |
($databaseArg); |
2183 |
$self->{ |
2184 |
'node' |
2185 |
}->{ |
2186 |
'dns' |
2187 |
} |
2188 |
= ${$self-> |
2189 |
get_default_namespace_uri_ref |
2190 |
}; |
2191 |
my @nodes = ($self->{ |
2192 |
'node' |
2193 |
}); |
2194 |
while (defined (my $node = shift @nodes)) { |
2195 |
CORE::delete $node->{ |
2196 |
'swod' |
2197 |
}; |
2198 |
push @nodes, grep {$_} @{$node->{ |
2199 |
'swcn' |
2200 |
}}, |
2201 |
$node->{ |
2202 |
'shadow' |
2203 |
}, |
2204 |
$node->{ |
2205 |
'shadowsib' |
2206 |
}; |
2207 |
} |
2208 |
$self->{ |
2209 |
'node' |
2210 |
} |
2211 |
-> |
2212 |
_orphanate |
2213 |
; |
2214 |
|
2215 |
|
2216 |
|
2217 |
} |
2218 |
|
2219 |
|
2220 |
;} |
2221 |
|
2222 |
; |
2223 |
|
2224 |
|
2225 |
} |
2226 |
} |
2227 |
sub get_namespace_binding_list ($$) { |
2228 |
my ($self, $databaseArg) = @_; |
2229 |
my $r = {}; |
2230 |
|
2231 |
{ |
2232 |
|
2233 |
my |
2234 |
$ods = $self->{ |
2235 |
'node' |
2236 |
}->{ |
2237 |
'swod' |
2238 |
}; |
2239 |
if ($ods->{ |
2240 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#allNSBindings' |
2241 |
}) { |
2242 |
$r = $ods->{ |
2243 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#allNSBindings' |
2244 |
}; |
2245 |
} else { |
2246 |
if ($databaseArg) { |
2247 |
for my $mod_uri (keys %{$databaseArg->{modDef}}) { |
2248 |
my $mod = $databaseArg-> |
2249 |
get_module |
2250 |
($mod_uri); |
2251 |
$ods->{ |
2252 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#allNSBindings' |
2253 |
} |
2254 |
->{$mod-> |
2255 |
local_name |
2256 |
} |
2257 |
= $mod-> |
2258 |
target_namespace_uri |
2259 |
; |
2260 |
} |
2261 |
} |
2262 |
for my $prefix (keys %{$ods->{ |
2263 |
'swnsb' |
2264 |
}}) { |
2265 |
$ods->{ |
2266 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#allNSBindings' |
2267 |
}->{$prefix} |
2268 |
= $ods->{ |
2269 |
'swnsb' |
2270 |
}->{$prefix}; |
2271 |
} |
2272 |
$r = $ods->{ |
2273 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#allNSBindings' |
2274 |
}; |
2275 |
} |
2276 |
|
2277 |
|
2278 |
} |
2279 |
$r} |
2280 |
sub get_default_namespace_uri_ref ($) { |
2281 |
my ($self) = @_; |
2282 |
my $r; |
2283 |
|
2284 |
{ |
2285 |
|
2286 |
my |
2287 |
$ods = $self->{ |
2288 |
'node' |
2289 |
}->{ |
2290 |
'swod' |
2291 |
}; |
2292 |
if ($ods->{ |
2293 |
'dns' |
2294 |
}) { |
2295 |
$r = \ ($ods->{ |
2296 |
'dns' |
2297 |
}); |
2298 |
} else { |
2299 |
|
2300 |
|
2301 |
{ |
2302 |
|
2303 |
local $Error::Depth = $Error::Depth + 1; |
2304 |
|
2305 |
{ |
2306 |
|
2307 |
|
2308 |
|
2309 |
$r = \($ods->{ |
2310 |
'dns' |
2311 |
} |
2312 |
= $self-> |
2313 |
owner_dis_document |
2314 |
|
2315 |
-> |
2316 |
module_element |
2317 |
|
2318 |
-> |
2319 |
defining_namespace_uri |
2320 |
); |
2321 |
|
2322 |
|
2323 |
|
2324 |
} |
2325 |
|
2326 |
|
2327 |
;} |
2328 |
|
2329 |
; |
2330 |
} |
2331 |
|
2332 |
|
2333 |
} |
2334 |
$r} |
2335 |
sub preserve_node_path ($) { |
2336 |
my ($self) = @_; |
2337 |
|
2338 |
{ |
2339 |
|
2340 |
|
2341 |
{ |
2342 |
|
2343 |
local $Error::Depth = $Error::Depth + 1; |
2344 |
|
2345 |
{ |
2346 |
|
2347 |
|
2348 |
|
2349 |
$self-> |
2350 |
flag |
2351 |
(nodePath => $self-> |
2352 |
node_path |
2353 |
|
2354 |
(key => [qw/QName Name Type type/])); |
2355 |
|
2356 |
|
2357 |
|
2358 |
} |
2359 |
|
2360 |
|
2361 |
;} |
2362 |
|
2363 |
; |
2364 |
|
2365 |
|
2366 |
} |
2367 |
} |
2368 |
sub clone ($) { |
2369 |
my ($self) = @_; |
2370 |
my $r; |
2371 |
|
2372 |
{ |
2373 |
|
2374 |
|
2375 |
$r = bless $self->SUPER::clone, |
2376 |
'Message::Util::DIS::ManakaiDISElement' |
2377 |
; |
2378 |
|
2379 |
|
2380 |
} |
2381 |
$r} |
2382 |
$Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISElement>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core', |
2383 |
{'', |
2384 |
'1', |
2385 |
'1.0', |
2386 |
'1'}, |
2387 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#perl', |
2388 |
{'', |
2389 |
'1', |
2390 |
'1.0', |
2391 |
'1'}, |
2392 |
'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core', |
2393 |
{'', |
2394 |
'1', |
2395 |
'2.1', |
2396 |
'1'}}; |
2397 |
$Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISElement>} = 4.1; |
2398 |
$Message::Util::ManakaiNode::ManakaiNodeRef::Prop{q<Message::Util::DIS::ManakaiDISElement>} = {'o', |
2399 |
['p'], |
2400 |
's', |
2401 |
['swcn'], |
2402 |
's0', |
2403 |
['shadow', |
2404 |
'shadowsib']}; |
2405 |
package Message::Util::IF::DISModuleElement; |
2406 |
our $VERSION = 20061231.0921; |
2407 |
package Message::Util::DIS::ManakaiDISModuleElement; |
2408 |
our $VERSION = 20061231.0921; |
2409 |
push our @ISA, 'Message::Util::DIS::ManakaiDISElement', |
2410 |
'Message::Util::IF::DISElement', |
2411 |
'Message::Util::IF::DISModuleElement'; |
2412 |
sub require_element ($;$) { |
2413 |
if (@_ == 1) {my ($self) = @_; |
2414 |
my $r; |
2415 |
|
2416 |
{ |
2417 |
|
2418 |
|
2419 |
{ |
2420 |
|
2421 |
local $Error::Depth = $Error::Depth + 1; |
2422 |
|
2423 |
{ |
2424 |
|
2425 |
|
2426 |
|
2427 |
$r = bless $self-> |
2428 |
get_attribute_ns |
2429 |
|
2430 |
( |
2431 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--' |
2432 |
, 'Require', make_new_node => |
2433 |
1 |
2434 |
), |
2435 |
|
2436 |
'Message::Util::DIS::ManakaiDISElement' |
2437 |
; |
2438 |
|
2439 |
|
2440 |
|
2441 |
} |
2442 |
|
2443 |
|
2444 |
;} |
2445 |
|
2446 |
; |
2447 |
|
2448 |
|
2449 |
} |
2450 |
$r; |
2451 |
} else {my ($self) = @_; |
2452 |
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::Util::DIS::ManakaiDISModuleElement', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'require_element'; |
2453 |
} |
2454 |
} |
2455 |
sub defining_namespace_uri ($;$) { |
2456 |
if (@_ == 1) {my ($self) = @_; |
2457 |
my $r; |
2458 |
|
2459 |
{ |
2460 |
|
2461 |
|
2462 |
{ |
2463 |
|
2464 |
local $Error::Depth = $Error::Depth + 1; |
2465 |
|
2466 |
{ |
2467 |
|
2468 |
|
2469 |
my |
2470 |
$df = $self-> |
2471 |
get_attribute_ns |
2472 |
|
2473 |
( |
2474 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--' |
2475 |
, 'Namespace'); |
2476 |
if ($df) { |
2477 |
$r = $df->value; |
2478 |
} else { |
2479 |
|
2480 |
|
2481 |
; |
2482 |
} |
2483 |
|
2484 |
|
2485 |
|
2486 |
} |
2487 |
|
2488 |
|
2489 |
;} |
2490 |
|
2491 |
; |
2492 |
|
2493 |
|
2494 |
} |
2495 |
$r; |
2496 |
} else {my ($self, $given) = @_; |
2497 |
|
2498 |
{ |
2499 |
|
2500 |
|
2501 |
{ |
2502 |
|
2503 |
local $Error::Depth = $Error::Depth + 1; |
2504 |
|
2505 |
{ |
2506 |
|
2507 |
|
2508 |
|
2509 |
$self-> |
2510 |
set_attribute_ns |
2511 |
|
2512 |
( |
2513 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--' |
2514 |
, 'Namespace' => $given); |
2515 |
|
2516 |
|
2517 |
|
2518 |
} |
2519 |
|
2520 |
|
2521 |
;} |
2522 |
|
2523 |
; |
2524 |
|
2525 |
|
2526 |
} |
2527 |
} |
2528 |
} |
2529 |
$Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISModuleElement>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core', |
2530 |
{'', |
2531 |
'1', |
2532 |
'1.0', |
2533 |
'1'}, |
2534 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#perl', |
2535 |
{'', |
2536 |
'1', |
2537 |
'1.0', |
2538 |
'1'}, |
2539 |
'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core', |
2540 |
{'', |
2541 |
'1', |
2542 |
'2.1', |
2543 |
'1'}}; |
2544 |
$Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISModuleElement>} = 4.1; |
2545 |
$Message::Util::ManakaiNode::ManakaiNodeRef::Prop{q<Message::Util::DIS::ManakaiDISModuleElement>} = {'o', |
2546 |
['p'], |
2547 |
's', |
2548 |
['swcn'], |
2549 |
's0', |
2550 |
['shadow', |
2551 |
'shadowsib']}; |
2552 |
package Message::Util::IF::DISElementList; |
2553 |
our $VERSION = 20061231.0921; |
2554 |
package Message::Util::DIS::ManakaiDISElementList; |
2555 |
our $VERSION = 20061231.0921; |
2556 |
push our @ISA, 'Message::Util::IF::DISElementList'; |
2557 |
$Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISElementList>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core', |
2558 |
{'', |
2559 |
'1', |
2560 |
'1.0', |
2561 |
'1'}}; |
2562 |
$Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISElementList>} = 1; |
2563 |
package Message::Util::IF::DISComment; |
2564 |
our $VERSION = 20061231.0921; |
2565 |
package Message::Util::DIS::ManakaiDISComment; |
2566 |
our $VERSION = 20061231.0921; |
2567 |
push our @ISA, 'Message::Util::DIS::ManakaiDISNode', |
2568 |
'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGComment', |
2569 |
'Message::Util::IF::DISComment'; |
2570 |
$Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISComment>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core', |
2571 |
{'', |
2572 |
'1', |
2573 |
'1.0', |
2574 |
'1'}, |
2575 |
'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core', |
2576 |
{'', |
2577 |
'1', |
2578 |
'2.1', |
2579 |
'1'}}; |
2580 |
$Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISComment>} = 3.1; |
2581 |
$Message::Util::ManakaiNode::ManakaiNodeRef::Prop{q<Message::Util::DIS::ManakaiDISComment>} = {'o', |
2582 |
['p'], |
2583 |
's', |
2584 |
['swcn']}; |
2585 |
package Message::Util::IF::DISDocumentFragment; |
2586 |
our $VERSION = 20061231.0921; |
2587 |
package Message::Util::DIS::ManakaiDISDocumentFragment; |
2588 |
our $VERSION = 20061231.0921; |
2589 |
push our @ISA, 'Message::Util::DIS::ManakaiDISNode', |
2590 |
'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocumentFragment', |
2591 |
'Message::Util::IF::DISDocumentFragment'; |
2592 |
$Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISDocumentFragment>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core', |
2593 |
{'', |
2594 |
'1', |
2595 |
'1.0', |
2596 |
'1'}, |
2597 |
'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core', |
2598 |
{'', |
2599 |
'1', |
2600 |
'2.1', |
2601 |
'1'}}; |
2602 |
$Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISDocumentFragment>} = 3.1; |
2603 |
$Message::Util::ManakaiNode::ManakaiNodeRef::Prop{q<Message::Util::DIS::ManakaiDISDocumentFragment>} = {'o', |
2604 |
['p', |
2605 |
'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowParent', |
2606 |
'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#shadowSiblingOf', |
2607 |
'shadowo'], |
2608 |
's', |
2609 |
['swcn']}; |
2610 |
package Message::Util::IF::DISDocument; |
2611 |
our $VERSION = 20061231.0921; |
2612 |
package Message::Util::DIS::ManakaiDISDocument; |
2613 |
our $VERSION = 20061231.0921; |
2614 |
push our @ISA, 'Message::Util::DIS::ManakaiDISNode', |
2615 |
'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGDocument', |
2616 |
'Message::Util::IF::DISDocument'; |
2617 |
sub module_element ($;$) { |
2618 |
if (@_ == 1) {my ($self) = @_; |
2619 |
my $r; |
2620 |
|
2621 |
{ |
2622 |
|
2623 |
|
2624 |
{ |
2625 |
|
2626 |
local $Error::Depth = $Error::Depth + 1; |
2627 |
|
2628 |
{ |
2629 |
|
2630 |
|
2631 |
|
2632 |
$r = $self-> |
2633 |
get_attribute_ns |
2634 |
|
2635 |
( |
2636 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--' |
2637 |
, 'Module', make_new_node => |
2638 |
1 |
2639 |
); |
2640 |
|
2641 |
|
2642 |
|
2643 |
} |
2644 |
|
2645 |
|
2646 |
;} |
2647 |
|
2648 |
; |
2649 |
$r = bless $r, |
2650 |
'Message::Util::DIS::ManakaiDISModuleElement' |
2651 |
; |
2652 |
|
2653 |
|
2654 |
} |
2655 |
$r; |
2656 |
} else {my ($self) = @_; |
2657 |
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::Util::DIS::ManakaiDISDocument', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'module_element'; |
2658 |
} |
2659 |
} |
2660 |
sub dis_database ($;$) { |
2661 |
if (@_ == 1) {my ($self) = @_; |
2662 |
my $r; |
2663 |
|
2664 |
{ |
2665 |
|
2666 |
if |
2667 |
($self->{ |
2668 |
'node' |
2669 |
}->{ |
2670 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#db' |
2671 |
}) { |
2672 |
$r = $self->{ |
2673 |
'node' |
2674 |
}->{ |
2675 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#db' |
2676 |
}; |
2677 |
} else { |
2678 |
|
2679 |
report Message::Util::DIS::ManakaiDISException -object => $self, '-type' => 'INVALID_STATE_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/DIS#NO_ASSOCIATED_DB_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDocument', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dis_database'; |
2680 |
|
2681 |
; |
2682 |
} |
2683 |
|
2684 |
|
2685 |
} |
2686 |
$r; |
2687 |
} else {my ($self, $given) = @_; |
2688 |
|
2689 |
{ |
2690 |
|
2691 |
|
2692 |
$self->{ |
2693 |
'node' |
2694 |
}->{ |
2695 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#db' |
2696 |
} = $given; |
2697 |
require Scalar::Util; |
2698 |
Scalar::Util::weaken ($self->{ |
2699 |
'node' |
2700 |
}->{ |
2701 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#db' |
2702 |
}); |
2703 |
|
2704 |
|
2705 |
} |
2706 |
} |
2707 |
} |
2708 |
sub dis_child_elements ($%) { |
2709 |
my ($self, %opt) = @_; |
2710 |
my $r; |
2711 |
|
2712 |
{ |
2713 |
|
2714 |
|
2715 |
$r = bless [], |
2716 |
'Message::Util::DIS::ManakaiDISElementList' |
2717 |
; |
2718 |
|
2719 |
|
2720 |
{ |
2721 |
|
2722 |
local $Error::Depth = $Error::Depth + 1; |
2723 |
|
2724 |
{ |
2725 |
|
2726 |
|
2727 |
C: |
2728 |
for my $cn (@{$self-> |
2729 |
child_nodes |
2730 |
}) { |
2731 |
next C unless $cn-> |
2732 |
node_type eq |
2733 |
'#element'; |
2734 |
my $dn; |
2735 |
|
2736 |
|
2737 |
{ |
2738 |
|
2739 |
|
2740 |
$cn->{'node'}->{ |
2741 |
'rc' |
2742 |
}++; |
2743 |
${$cn->{'node'}->{ |
2744 |
'grc' |
2745 |
}}++; |
2746 |
$dn = bless { |
2747 |
|
2748 |
'node' |
2749 |
=> $cn->{'node'}, |
2750 |
}, 'Message::Util::DIS::ManakaiDISElement'; |
2751 |
|
2752 |
|
2753 |
} |
2754 |
|
2755 |
; |
2756 |
next C unless $dn-> |
2757 |
for_match |
2758 |
|
2759 |
(undef, $opt{forp_arg}, |
2760 |
database_arg => $opt{database_arg}); |
2761 |
push @$r, $dn; |
2762 |
} |
2763 |
|
2764 |
|
2765 |
|
2766 |
} |
2767 |
|
2768 |
|
2769 |
;} |
2770 |
|
2771 |
; |
2772 |
|
2773 |
|
2774 |
} |
2775 |
$r} |
2776 |
sub dis_all_child_elements ($) { |
2777 |
my ($self) = @_; |
2778 |
my $r; |
2779 |
|
2780 |
{ |
2781 |
|
2782 |
|
2783 |
$r = bless [], |
2784 |
'Message::Util::DIS::ManakaiDISElementList' |
2785 |
; |
2786 |
|
2787 |
|
2788 |
{ |
2789 |
|
2790 |
local $Error::Depth = $Error::Depth + 1; |
2791 |
|
2792 |
{ |
2793 |
|
2794 |
|
2795 |
C: |
2796 |
for my $cn (@{$self-> |
2797 |
child_nodes |
2798 |
}) { |
2799 |
next C unless $cn-> |
2800 |
node_type eq |
2801 |
'#element'; |
2802 |
my $dn; |
2803 |
|
2804 |
|
2805 |
{ |
2806 |
|
2807 |
|
2808 |
$cn->{'node'}->{ |
2809 |
'rc' |
2810 |
}++; |
2811 |
${$cn->{'node'}->{ |
2812 |
'grc' |
2813 |
}}++; |
2814 |
$dn = bless { |
2815 |
|
2816 |
'node' |
2817 |
=> $cn->{'node'}, |
2818 |
}, 'Message::Util::DIS::ManakaiDISElement'; |
2819 |
|
2820 |
|
2821 |
} |
2822 |
|
2823 |
; |
2824 |
push @$r, $dn; |
2825 |
} |
2826 |
|
2827 |
|
2828 |
|
2829 |
} |
2830 |
|
2831 |
|
2832 |
;} |
2833 |
|
2834 |
; |
2835 |
|
2836 |
|
2837 |
} |
2838 |
$r} |
2839 |
sub add_namespace_binding ($$;$) { |
2840 |
my ($self, $prefix, $namespaceURI) = @_; |
2841 |
|
2842 |
{ |
2843 |
|
2844 |
if |
2845 |
(defined $namespaceURI) { |
2846 |
$self->{ |
2847 |
'node' |
2848 |
}->{ |
2849 |
'swnsb' |
2850 |
}->{$prefix} |
2851 |
= $namespaceURI; |
2852 |
} else { |
2853 |
CORE::delete $self->{ |
2854 |
'node' |
2855 |
}->{ |
2856 |
'swnsb' |
2857 |
} |
2858 |
->{$prefix}; |
2859 |
} |
2860 |
|
2861 |
|
2862 |
} |
2863 |
} |
2864 |
sub dis_namespace_resolver ($;$) { |
2865 |
if (@_ == 1) {my ($self) = @_; |
2866 |
my $r; |
2867 |
|
2868 |
{ |
2869 |
|
2870 |
|
2871 |
$r = $self->{ |
2872 |
'node' |
2873 |
}->{ |
2874 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#disNamespaceResolver' |
2875 |
}; |
2876 |
|
2877 |
|
2878 |
} |
2879 |
$r; |
2880 |
} else {my ($self, $given) = @_; |
2881 |
|
2882 |
{ |
2883 |
|
2884 |
|
2885 |
$self->{ |
2886 |
'node' |
2887 |
}->{ |
2888 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#disNamespaceResolver' |
2889 |
} = $given; |
2890 |
|
2891 |
|
2892 |
} |
2893 |
} |
2894 |
} |
2895 |
$Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISDocument>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core', |
2896 |
{'', |
2897 |
'1', |
2898 |
'1.0', |
2899 |
'1'}, |
2900 |
'http://suika.fam.cx/~wakaba/archive/2005/swcfg21#core', |
2901 |
{'', |
2902 |
'1', |
2903 |
'2.1', |
2904 |
'1'}}; |
2905 |
$Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISDocument>} = 3.1; |
2906 |
$Message::Util::ManakaiNode::ManakaiNodeRef::Prop{q<Message::Util::DIS::ManakaiDISDocument>} = {'o', |
2907 |
['p'], |
2908 |
's', |
2909 |
['swcn'], |
2910 |
's2', |
2911 |
['swetb']}; |
2912 |
package Message::Util::IF::DISDatabase; |
2913 |
our $VERSION = 20061231.0921; |
2914 |
package Message::Util::DIS::ManakaiDISDatabase; |
2915 |
our $VERSION = 20061231.0921; |
2916 |
push our @ISA, 'Message::Util::DIS::Perl::ManakaiDISDatabasePerl', |
2917 |
'Message::Util::IF::DISDatabase'; |
2918 |
sub get_module ($$) { |
2919 |
my ($self, $moduleURI) = @_; |
2920 |
my $r; |
2921 |
|
2922 |
{ |
2923 |
|
2924 |
if |
2925 |
(defined $self->{modDef}->{$moduleURI}) { |
2926 |
$r = $self->{modDef}->{$moduleURI}; |
2927 |
} else { |
2928 |
$r = $self->{modDef}->{$moduleURI} |
2929 |
= bless { |
2930 |
uri => $moduleURI, |
2931 |
db => $self, |
2932 |
forp => [], |
2933 |
|
2934 |
'tu' |
2935 |
=> |
2936 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#Module' |
2937 |
, |
2938 |
|
2939 |
'r' |
2940 |
=> 0, |
2941 |
}, |
2942 |
'Message::Util::DIS::ManakaiDISModuleDefinition' |
2943 |
; |
2944 |
require Scalar::Util; |
2945 |
Scalar::Util::weaken ($r->{db}); |
2946 |
} |
2947 |
|
2948 |
|
2949 |
} |
2950 |
$r} |
2951 |
sub get_for ($;$) { |
2952 |
my ($self, $forURI) = @_; |
2953 |
my $r; |
2954 |
|
2955 |
{ |
2956 |
|
2957 |
|
2958 |
$forURI = |
2959 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all' unless |
2960 |
defined $forURI; |
2961 |
if (defined $self->{forDef}->{$forURI}) { |
2962 |
$r = $self->{forDef}->{$forURI}; |
2963 |
} elsif (defined $self->{ |
2964 |
'rm' |
2965 |
}->{$forURI}) { |
2966 |
|
2967 |
|
2968 |
{ |
2969 |
|
2970 |
local $Error::Depth = $Error::Depth + 1; |
2971 |
|
2972 |
{ |
2973 |
|
2974 |
|
2975 |
|
2976 |
$self-> |
2977 |
_pl_load_dis_database_module |
2978 |
|
2979 |
($self-> |
2980 |
get_module |
2981 |
|
2982 |
(${$self->{ |
2983 |
'rm' |
2984 |
}->{$forURI}})); |
2985 |
|
2986 |
|
2987 |
|
2988 |
} |
2989 |
|
2990 |
|
2991 |
;} |
2992 |
|
2993 |
; |
2994 |
unless (defined $self->{forDef}->{$forURI}) { |
2995 |
|
2996 |
report Message::Util::DIS::ManakaiDISException -object => $self, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'get_for', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_NOT_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $forURI, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#moduleURI' => ${$self->{'rm'} |
2997 |
->{$forURI}}; |
2998 |
|
2999 |
; |
3000 |
} |
3001 |
$r = $self->{forDef}->{$forURI}; |
3002 |
} else { |
3003 |
$r = $self->{forDef}->{$forURI} |
3004 |
= bless { |
3005 |
uri => $forURI, |
3006 |
isa => { |
3007 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all' |
3008 |
=> |
3009 |
1 |
3010 |
}, |
3011 |
revISA => {}, |
3012 |
db => $self, |
3013 |
|
3014 |
'tu' |
3015 |
=> |
3016 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#For' |
3017 |
, |
3018 |
|
3019 |
'r' |
3020 |
=> 0, |
3021 |
}, |
3022 |
'Message::Util::DIS::ManakaiDISForDefinition' |
3023 |
; |
3024 |
$self->{forDef}->{ |
3025 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all' |
3026 |
}->{revISA}->{$forURI} = |
3027 |
1 |
3028 |
; |
3029 |
require Scalar::Util; |
3030 |
Scalar::Util::weaken ($r->{db}); |
3031 |
} |
3032 |
|
3033 |
|
3034 |
} |
3035 |
$r} |
3036 |
sub get_resource ($;$) { |
3037 |
my ($self, $resourceURI) = @_; |
3038 |
my $r; |
3039 |
|
3040 |
{ |
3041 |
|
3042 |
|
3043 |
$resourceURI = |
3044 |
'http://suika.fam.cx/~wakaba/archive/2004/dom/main#any' unless |
3045 |
defined $resourceURI; |
3046 |
my $resURI = $resourceURI; |
3047 |
|
3048 |
if (defined $self->{resDef}->{$resURI}) { |
3049 |
$r = $self->{resDef}->{$resURI}; |
3050 |
} elsif (defined $self->{ |
3051 |
'rm' |
3052 |
}->{$resURI}) { |
3053 |
|
3054 |
|
3055 |
{ |
3056 |
|
3057 |
local $Error::Depth = $Error::Depth + 1; |
3058 |
|
3059 |
{ |
3060 |
|
3061 |
|
3062 |
|
3063 |
$self-> |
3064 |
_pl_load_dis_database_module |
3065 |
|
3066 |
($self-> |
3067 |
get_module |
3068 |
|
3069 |
(${$self->{ |
3070 |
'rm' |
3071 |
}->{$resURI}})); |
3072 |
|
3073 |
|
3074 |
|
3075 |
} |
3076 |
|
3077 |
|
3078 |
;} |
3079 |
|
3080 |
; |
3081 |
unless (defined $self->{resDef}->{$resURI}) { |
3082 |
|
3083 |
report Message::Util::DIS::ManakaiDISException -object => $self, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'get_resource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_NOT_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $resURI, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#moduleURI' => ${$self->{'rm'} |
3084 |
->{$resURI}}; |
3085 |
|
3086 |
; |
3087 |
} |
3088 |
$r = $self->{resDef}->{$resURI}; |
3089 |
} else { |
3090 |
$r = $self->{resDef}->{$resURI} |
3091 |
= bless { |
3092 |
uri => $resURI, |
3093 |
aliasURI => {$resURI => |
3094 |
1 |
3095 |
}, |
3096 |
db => $self, |
3097 |
forp => [], |
3098 |
seq => -1, |
3099 |
|
3100 |
'tu' |
3101 |
=> |
3102 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#Resource' |
3103 |
, |
3104 |
|
3105 |
'r' |
3106 |
=> 0, |
3107 |
}, |
3108 |
'Message::Util::DIS::ManakaiDISResourceDefinition' |
3109 |
; |
3110 |
require Scalar::Util; |
3111 |
Scalar::Util::weaken ($r->{db}); |
3112 |
} |
3113 |
|
3114 |
|
3115 |
} |
3116 |
$r} |
3117 |
sub get_any_resource ($;$) { |
3118 |
my ($self, $resourceURI) = @_; |
3119 |
my $r; |
3120 |
|
3121 |
{ |
3122 |
|
3123 |
|
3124 |
$resourceURI = |
3125 |
'http://suika.fam.cx/~wakaba/archive/2004/dom/main#any' unless |
3126 |
defined $resourceURI; |
3127 |
my $resURI = $resourceURI; |
3128 |
|
3129 |
if (defined $self->{resDef}->{$resURI}) { |
3130 |
$r = $self->{resDef}->{$resURI}; |
3131 |
} elsif (defined $self->{modDef}->{$resURI}) { |
3132 |
$r = $self->{modDef}->{$resURI}; |
3133 |
} elsif (defined $self->{forDef}->{$resURI}) { |
3134 |
$r = $self->{forDef}->{$resURI}; |
3135 |
} elsif (defined $self->{ |
3136 |
'rm' |
3137 |
}->{$resURI}) { |
3138 |
|
3139 |
|
3140 |
{ |
3141 |
|
3142 |
local $Error::Depth = $Error::Depth + 1; |
3143 |
|
3144 |
{ |
3145 |
|
3146 |
|
3147 |
|
3148 |
$self-> |
3149 |
_pl_load_dis_database_module |
3150 |
|
3151 |
($self-> |
3152 |
get_module |
3153 |
|
3154 |
(${$self->{ |
3155 |
'rm' |
3156 |
}->{$resURI}})); |
3157 |
|
3158 |
|
3159 |
|
3160 |
} |
3161 |
|
3162 |
|
3163 |
;} |
3164 |
|
3165 |
; |
3166 |
if (defined $self->{resDef}->{$resURI}) { |
3167 |
$r = $self->{resDef}->{$resURI}; |
3168 |
} elsif (defined $self->{forDef}->{$resURI}) { |
3169 |
$r = $self->{forDef}->{$resURI}; |
3170 |
} else { |
3171 |
|
3172 |
report Message::Util::DIS::ManakaiDISException -object => $self, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'get_any_resource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_NOT_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $resURI, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#moduleURI' => ${$self->{'rm'} |
3173 |
->{$resURI}}; |
3174 |
|
3175 |
; |
3176 |
} |
3177 |
} else { |
3178 |
|
3179 |
|
3180 |
{ |
3181 |
|
3182 |
local $Error::Depth = $Error::Depth + 1; |
3183 |
|
3184 |
{ |
3185 |
|
3186 |
|
3187 |
|
3188 |
$r = $self-> |
3189 |
get_resource |
3190 |
($resURI); |
3191 |
|
3192 |
|
3193 |
|
3194 |
} |
3195 |
|
3196 |
|
3197 |
;} |
3198 |
|
3199 |
; |
3200 |
} |
3201 |
|
3202 |
|
3203 |
} |
3204 |
$r} |
3205 |
sub get_source_file ($$) { |
3206 |
my ($self, $fileName) = @_; |
3207 |
my $r; |
3208 |
|
3209 |
{ |
3210 |
|
3211 |
|
3212 |
$r = $self->{ |
3213 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceFile' |
3214 |
}->{$fileName}; |
3215 |
|
3216 |
|
3217 |
} |
3218 |
$r} |
3219 |
sub set_source_file ($$$) { |
3220 |
my ($self, $fileName, $doc) = @_; |
3221 |
|
3222 |
{ |
3223 |
|
3224 |
|
3225 |
$self->{ |
3226 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceFile' |
3227 |
}->{$fileName} = $doc; |
3228 |
|
3229 |
|
3230 |
} |
3231 |
} |
3232 |
sub load_module ($$$%) { |
3233 |
my ($self, $doc, $resolver, %opt) = @_; |
3234 |
|
3235 |
{ |
3236 |
|
3237 |
|
3238 |
$resolver = bless $resolver, |
3239 |
'Message::Util::DIS::ManakaiDISModuleResolver' |
3240 |
if |
3241 |
ref $resolver eq 'CODE'; |
3242 |
|
3243 |
|
3244 |
} |
3245 |
|
3246 |
{ |
3247 |
|
3248 |
|
3249 |
$resolver = bless $resolver, |
3250 |
'Message::Util::DIS::ManakaiDISModuleResolver' |
3251 |
if |
3252 |
ref $resolver eq 'CODE'; |
3253 |
## -- Module Name, URI |
3254 |
my $mod_node; |
3255 |
my $mod_name_node; |
3256 |
|
3257 |
|
3258 |
{ |
3259 |
|
3260 |
local $Error::Depth = $Error::Depth + 1; |
3261 |
|
3262 |
{ |
3263 |
|
3264 |
|
3265 |
|
3266 |
$mod_node = $doc-> |
3267 |
module_element |
3268 |
; |
3269 |
$mod_name_node = $mod_node-> |
3270 |
get_attribute_ns |
3271 |
|
3272 |
( |
3273 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--' |
3274 |
, 'QName'); |
3275 |
unless ($mod_name_node) { |
3276 |
|
3277 |
|
3278 |
{ |
3279 |
|
3280 |
local $Error::Depth = $Error::Depth - 1; |
3281 |
|
3282 |
{ |
3283 |
|
3284 |
|
3285 |
|
3286 |
|
3287 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $mod_node, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_module', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_MODULE_QNAME_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase'; |
3288 |
|
3289 |
; |
3290 |
|
3291 |
|
3292 |
|
3293 |
} |
3294 |
|
3295 |
|
3296 |
;} |
3297 |
|
3298 |
; |
3299 |
} |
3300 |
$mod_name_node = bless $mod_name_node, |
3301 |
'Message::Util::DIS::ManakaiDISElement' |
3302 |
if |
3303 |
$mod_name_node->isa ( |
3304 |
'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGElement' |
3305 |
); |
3306 |
my $mod_name_uri = $mod_name_node |
3307 |
-> |
3308 |
qname_value_uri |
3309 |
; |
3310 |
my $mod = $self-> |
3311 |
get_module |
3312 |
|
3313 |
($mod_name_uri); |
3314 |
|
3315 |
unless ($mod-> |
3316 |
is_defined |
3317 |
) { |
3318 |
## -- Initializes Module Definition Object |
3319 |
my $v = $mod_name_node-> |
3320 |
qname_value_local_name |
3321 |
; |
3322 |
|
3323 |
|
3324 |
{ |
3325 |
|
3326 |
if |
3327 |
(defined $v) { |
3328 |
if (ref $v eq 'SCALAR') { |
3329 |
$mod->{localName} = $v; |
3330 |
} elsif (defined $Message::Util::ManakaiStringRef::Value{$v}) { |
3331 |
$mod->{localName} = $Message::Util::ManakaiStringRef::Value{$v}; |
3332 |
} else { |
3333 |
require Scalar::Util; |
3334 |
$mod->{localName} = $Message::Util::ManakaiStringRef::Value{$v} = \($v); |
3335 |
Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{$v}); |
3336 |
} |
3337 |
} else { |
3338 |
CORE::delete $mod->{localName}; |
3339 |
} |
3340 |
|
3341 |
|
3342 |
} |
3343 |
|
3344 |
; |
3345 |
my $ns = $mod_name_node-> |
3346 |
qname_value_namespace_uri |
3347 |
; |
3348 |
|
3349 |
|
3350 |
{ |
3351 |
|
3352 |
if |
3353 |
(defined $ns) { |
3354 |
if (ref $ns eq 'SCALAR') { |
3355 |
$mod->{namespaceURI} = $ns; |
3356 |
} elsif (defined $Message::Util::ManakaiStringRef::Value{$ns}) { |
3357 |
$mod->{namespaceURI} = $Message::Util::ManakaiStringRef::Value{$ns}; |
3358 |
} else { |
3359 |
require Scalar::Util; |
3360 |
$mod->{namespaceURI} = $Message::Util::ManakaiStringRef::Value{$ns} = \($ns); |
3361 |
Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{$ns}); |
3362 |
} |
3363 |
} else { |
3364 |
CORE::delete $mod->{namespaceURI}; |
3365 |
} |
3366 |
|
3367 |
|
3368 |
} |
3369 |
|
3370 |
; |
3371 |
$mod->{src} = $mod_node; |
3372 |
$mod->{ |
3373 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isDefined' |
3374 |
} = |
3375 |
1 |
3376 |
; |
3377 |
$self-> |
3378 |
set_source_file |
3379 |
($mod_name_uri => $doc); |
3380 |
|
3381 |
$mod-> |
3382 |
target_namespace_uri |
3383 |
|
3384 |
($mod_node-> |
3385 |
defining_namespace_uri |
3386 |
); |
3387 |
|
3388 |
|
3389 |
|
3390 |
{ |
3391 |
|
3392 |
|
3393 |
$mod->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceFile'} = |
3394 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value |
3395 |
|
3396 |
('http://suika.fam.cx/~wakaba/archive/2004/dis/Core#String', $doc->flag ('http://suika.fam.cx/~wakaba/archive/2005/swcfg21#fileName'), base_type => 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#String'); |
3397 |
|
3398 |
|
3399 |
{ |
3400 |
|
3401 |
local $Error::Depth = $Error::Depth + 1; |
3402 |
|
3403 |
{ |
3404 |
|
3405 |
|
3406 |
|
3407 |
$mod->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceFile'}-> |
3408 |
name |
3409 |
('http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceFile'); |
3410 |
|
3411 |
|
3412 |
|
3413 |
} |
3414 |
|
3415 |
|
3416 |
;} |
3417 |
|
3418 |
; |
3419 |
|
3420 |
|
3421 |
} |
3422 |
|
3423 |
; |
3424 |
|
3425 |
|
3426 |
{ |
3427 |
|
3428 |
|
3429 |
$mod->{ |
3430 |
'r' |
3431 |
} = time; |
3432 |
|
3433 |
|
3434 |
} |
3435 |
|
3436 |
; |
3437 |
|
3438 |
## -- Loads "for" definition |
3439 |
my $root_elements |
3440 |
= $doc-> |
3441 |
dis_all_child_elements |
3442 |
; |
3443 |
R: for my $el (@$root_elements) { |
3444 |
next R unless $el-> |
3445 |
expanded_uri eq |
3446 |
|
3447 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ForDef' |
3448 |
; |
3449 |
$self-> |
3450 |
load_for |
3451 |
|
3452 |
($mod, $el, srinfo => $opt{srinfo}); |
3453 |
} |
3454 |
|
3455 |
## -- Loads "for all" |
3456 |
my $rmod = $self-> |
3457 |
get_module |
3458 |
|
3459 |
($mod_name_uri); |
3460 |
unless ($rmod-> |
3461 |
is_defined |
3462 |
) { |
3463 |
my $rdoc = $resolver-> |
3464 |
uri_to_document |
3465 |
|
3466 |
($self, $rmod-> |
3467 |
uri |
3468 |
, |
3469 |
$mod-> |
3470 |
namespace_uri |
3471 |
, |
3472 |
$mod-> |
3473 |
local_name |
3474 |
); |
3475 |
unless ($rdoc) { |
3476 |
|
3477 |
|
3478 |
{ |
3479 |
|
3480 |
local $Error::Depth = $Error::Depth - 1; |
3481 |
|
3482 |
{ |
3483 |
|
3484 |
|
3485 |
|
3486 |
|
3487 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $mod->source_element, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_module', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#namespaceURI' => $mod->namespace_uri, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#localName' => $mod->local_name, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#UNABLE_TO_GET_MODULE_ERR', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $rmod->uri; |
3488 |
|
3489 |
; |
3490 |
|
3491 |
|
3492 |
|
3493 |
} |
3494 |
|
3495 |
|
3496 |
;} |
3497 |
|
3498 |
; |
3499 |
} |
3500 |
$self-> |
3501 |
load_module |
3502 |
|
3503 |
($rdoc, $resolver, |
3504 |
on_resource_read => $opt{on_resource_read}, |
3505 |
srinfo => $opt{srinfo}); |
3506 |
} else { # if "for all" loaded |
3507 |
$rmod-> |
3508 |
get_property_boolean |
3509 |
|
3510 |
( |
3511 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--In' |
3512 |
); |
3513 |
## Dummy to ensure the module is loaded |
3514 |
} |
3515 |
|
3516 |
## -- Loads Required Modules |
3517 |
my $req_node = $mod_node-> |
3518 |
require_element |
3519 |
; |
3520 |
for my $rm (@{$req_node-> |
3521 |
dis_all_child_elements |
3522 |
}) { |
3523 |
next unless $rm-> |
3524 |
expanded_uri eq |
3525 |
|
3526 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Module' |
3527 |
; |
3528 |
my ($uri, $nuri, $ln); |
3529 |
my $mqn = $rm-> |
3530 |
get_attribute_ns |
3531 |
( |
3532 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--' |
3533 |
, 'QName'); |
3534 |
if ($mqn) { |
3535 |
my $mqv = $mqn-> |
3536 |
value |
3537 |
; |
3538 |
my $mqp = ($mqn->isa ( |
3539 |
'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGElement' |
3540 |
) |
3541 |
? (bless $mqn, |
3542 |
'Message::Util::DIS::ManakaiDISElement' |
3543 |
) : $mqn) |
3544 |
-> |
3545 |
qname_to_pair |
3546 |
($mqv, node => $mqn); |
3547 |
($nuri, $ln) = @$mqp; |
3548 |
} else { |
3549 |
my $mn = $rm-> |
3550 |
get_attribute_ns |
3551 |
( |
3552 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--' |
3553 |
, 'Name'); |
3554 |
if ($mn) { |
3555 |
$nuri = $mod-> |
3556 |
namespace_uri |
3557 |
; |
3558 |
$ln = $mn-> |
3559 |
value |
3560 |
; |
3561 |
} else { |
3562 |
$nuri = $mod-> |
3563 |
namespace_uri |
3564 |
; |
3565 |
$ln = $mod-> |
3566 |
local_name |
3567 |
; |
3568 |
} |
3569 |
} |
3570 |
my $rmod = $self-> |
3571 |
get_module |
3572 |
|
3573 |
($nuri . $ln); |
3574 |
$mod-> |
3575 |
add_referring_module_uri |
3576 |
($nuri.$ln); |
3577 |
unless ($rmod-> |
3578 |
is_defined |
3579 |
) { |
3580 |
my $rdoc = $resolver-> |
3581 |
uri_to_document |
3582 |
|
3583 |
($self, $rmod-> |
3584 |
uri |
3585 |
, |
3586 |
$nuri, $ln); |
3587 |
unless ($rdoc) { |
3588 |
|
3589 |
|
3590 |
{ |
3591 |
|
3592 |
local $Error::Depth = $Error::Depth - 1; |
3593 |
|
3594 |
{ |
3595 |
|
3596 |
|
3597 |
|
3598 |
|
3599 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $rm, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_module', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#namespaceURI' => $nuri, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#localName' => $ln, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#UNABLE_TO_GET_MODULE_ERR', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $rmod->uri; |
3600 |
|
3601 |
; |
3602 |
|
3603 |
|
3604 |
|
3605 |
} |
3606 |
|
3607 |
|
3608 |
;} |
3609 |
|
3610 |
; |
3611 |
} |
3612 |
$self-> |
3613 |
load_module |
3614 |
|
3615 |
($rdoc, $resolver, |
3616 |
on_resource_read => $opt{on_resource_read}, |
3617 |
srinfo => $opt{srinfo}); |
3618 |
} |
3619 |
} # Child Module elements |
3620 |
|
3621 |
## -- Loads child resources |
3622 |
$root_elements = $doc-> |
3623 |
dis_child_elements |
3624 |
|
3625 |
(database_arg => $self); |
3626 |
for my $el (@$root_elements) { |
3627 |
if ($el-> |
3628 |
is_resource_element |
3629 |
) { |
3630 |
$self-> |
3631 |
load_resource |
3632 |
|
3633 |
($mod, |
3634 |
undef |
3635 |
, |
3636 |
undef |
3637 |
, $el, |
3638 |
on_resource_read => $opt{on_resource_read}, |
3639 |
srinfo => $opt{srinfo}); |
3640 |
} else { |
3641 |
my $et = $el-> |
3642 |
expanded_uri |
3643 |
; |
3644 |
if ({ |
3645 |
|
3646 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ForDef' |
3647 |
=> 1, |
3648 |
|
3649 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Module' |
3650 |
=> 1, |
3651 |
|
3652 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ImplNote' |
3653 |
=> 1, |
3654 |
}->{$et}) { |
3655 |
# |
3656 |
} else { |
3657 |
|
3658 |
|
3659 |
{ |
3660 |
|
3661 |
local $Error::Depth = $Error::Depth - 1; |
3662 |
|
3663 |
{ |
3664 |
|
3665 |
|
3666 |
|
3667 |
|
3668 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $el, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_module', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#ELEMENT_NOT_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#elementType' => $et, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $mod->uri; |
3669 |
|
3670 |
; |
3671 |
|
3672 |
|
3673 |
|
3674 |
} |
3675 |
|
3676 |
|
3677 |
;} |
3678 |
|
3679 |
; |
3680 |
} |
3681 |
} # element types |
3682 |
} |
3683 |
|
3684 |
my $dn = $mod_node-> |
3685 |
get_attribute_ns |
3686 |
|
3687 |
( |
3688 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--' |
3689 |
, 'Namespace'); |
3690 |
unless ($dn and defined $dn-> |
3691 |
value |
3692 |
) { |
3693 |
|
3694 |
|
3695 |
{ |
3696 |
|
3697 |
local $Error::Depth = $Error::Depth - 1; |
3698 |
|
3699 |
{ |
3700 |
|
3701 |
|
3702 |
|
3703 |
|
3704 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $mod_node, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_module', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_REQUIRED_ATTR_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#elementType' => 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Namespace'; |
3705 |
|
3706 |
; |
3707 |
|
3708 |
|
3709 |
|
3710 |
} |
3711 |
|
3712 |
|
3713 |
;} |
3714 |
|
3715 |
; |
3716 |
} |
3717 |
} # Unless this module loaded |
3718 |
|
3719 |
|
3720 |
|
3721 |
} |
3722 |
|
3723 |
|
3724 |
;} |
3725 |
|
3726 |
; # Deep |
3727 |
|
3728 |
|
3729 |
} |
3730 |
} |
3731 |
sub load_for ($$$%) { |
3732 |
my ($self, $mod, $el, %opt) = @_; |
3733 |
|
3734 |
{ |
3735 |
|
3736 |
|
3737 |
{ |
3738 |
|
3739 |
local $Error::Depth = $Error::Depth + 1; |
3740 |
|
3741 |
{ |
3742 |
|
3743 |
|
3744 |
my |
3745 |
$qn_node = $el-> |
3746 |
get_attribute_ns |
3747 |
( |
3748 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--' |
3749 |
, 'QName'); |
3750 |
unless ($qn_node) { |
3751 |
|
3752 |
|
3753 |
{ |
3754 |
|
3755 |
local $Error::Depth = $Error::Depth - 1; |
3756 |
|
3757 |
{ |
3758 |
|
3759 |
|
3760 |
|
3761 |
|
3762 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $el, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_for', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_FOR_QNAME_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase'; |
3763 |
|
3764 |
; |
3765 |
|
3766 |
|
3767 |
|
3768 |
} |
3769 |
|
3770 |
|
3771 |
;} |
3772 |
|
3773 |
; |
3774 |
} |
3775 |
$qn_node = bless $qn_node, |
3776 |
'Message::Util::DIS::ManakaiDISElement' |
3777 |
if |
3778 |
$qn_node->isa ( |
3779 |
'Message::Markup::SuikaWikiConfig21::ManakaiSWCFGElement' |
3780 |
); |
3781 |
my $qn_uri = $qn_node-> |
3782 |
qname_value_uri |
3783 |
; |
3784 |
my $for = $self-> |
3785 |
get_for |
3786 |
($qn_uri); |
3787 |
|
3788 |
unless ($for-> |
3789 |
is_defined |
3790 |
) { |
3791 |
## -- Initializes "For" Definition Object |
3792 |
$for->{src} = $el; |
3793 |
$for->{ |
3794 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isDefined' |
3795 |
} = |
3796 |
1 |
3797 |
; |
3798 |
$for->{ |
3799 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#definingModule' |
3800 |
} = \ ($mod->{uri}); |
3801 |
$mod-> |
3802 |
add_for_resource |
3803 |
($for); |
3804 |
|
3805 |
for my $ce (@{$el-> |
3806 |
dis_all_child_elements |
3807 |
}) { |
3808 |
my $xn = $ce-> |
3809 |
expanded_uri |
3810 |
; |
3811 |
if ($xn eq |
3812 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ISA' or |
3813 |
$xn eq |
3814 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Implement' |
3815 |
) { |
3816 |
my $sfor = $self-> |
3817 |
get_for |
3818 |
|
3819 |
($ce-> |
3820 |
qname_value_uri |
3821 |
); |
3822 |
$for-> |
3823 |
add_isa |
3824 |
($sfor); |
3825 |
$sfor-> |
3826 |
is_referred |
3827 |
($ce); |
3828 |
## TODO: warn if dis:Implement |
3829 |
} elsif ({ |
3830 |
|
3831 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Description' |
3832 |
=> 1, |
3833 |
|
3834 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ImplNote' |
3835 |
=> 1, |
3836 |
|
3837 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--FullName' |
3838 |
=> 1, |
3839 |
|
3840 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--QName' |
3841 |
=> 1, |
3842 |
}->{$xn}) { |
3843 |
# |
3844 |
} else { |
3845 |
|
3846 |
|
3847 |
{ |
3848 |
|
3849 |
local $Error::Depth = $Error::Depth - 1; |
3850 |
|
3851 |
{ |
3852 |
|
3853 |
|
3854 |
|
3855 |
|
3856 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $ce, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_for', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#ELEMENT_NOT_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#elementType' => $xn, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $qn_uri; |
3857 |
|
3858 |
; |
3859 |
|
3860 |
|
3861 |
|
3862 |
} |
3863 |
|
3864 |
|
3865 |
;} |
3866 |
|
3867 |
; |
3868 |
} |
3869 |
} |
3870 |
|
3871 |
for (keys %{$opt{srinfo}->{for}->{$qn_uri}->{supOf} or {}}) { |
3872 |
my $subfor = $self-> |
3873 |
get_for |
3874 |
($_); |
3875 |
$subfor-> |
3876 |
add_isa |
3877 |
($for, srinfo => $opt{srinfo}); |
3878 |
} |
3879 |
for (keys %{$opt{srinfo}->{for}->{$qn_uri}->{subOf} or {}}) { |
3880 |
my $supfor = $self-> |
3881 |
get_for |
3882 |
($_); |
3883 |
$for-> |
3884 |
add_isa |
3885 |
($supfor, srinfo => $opt{srinfo}); |
3886 |
} |
3887 |
} else { |
3888 |
|
3889 |
|
3890 |
{ |
3891 |
|
3892 |
local $Error::Depth = $Error::Depth - 1; |
3893 |
|
3894 |
{ |
3895 |
|
3896 |
|
3897 |
|
3898 |
|
3899 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $el, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_for', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#anotherSourceNode' => $el, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#FOR_ALREADY_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $qn_uri; |
3900 |
|
3901 |
; |
3902 |
|
3903 |
|
3904 |
|
3905 |
} |
3906 |
|
3907 |
|
3908 |
;} |
3909 |
|
3910 |
; |
3911 |
} # isDefine? |
3912 |
|
3913 |
|
3914 |
|
3915 |
} |
3916 |
|
3917 |
|
3918 |
;} |
3919 |
|
3920 |
; # DEEP |
3921 |
|
3922 |
|
3923 |
} |
3924 |
} |
3925 |
sub load_resource ($$$$$%) { |
3926 |
my ($self, $mod, $parentResource, $dynParent, $el, %opt) = @_; |
3927 |
|
3928 |
{ |
3929 |
|
3930 |
|
3931 |
$opt{forp_arg} ||= []; |
3932 |
|
3933 |
|
3934 |
{ |
3935 |
|
3936 |
local $Error::Depth = $Error::Depth + 1; |
3937 |
|
3938 |
{ |
3939 |
|
3940 |
|
3941 |
|
3942 |
## -- Node names |
3943 |
my @res_uri; |
3944 |
|
3945 |
## Unique resource identifier generated from node id |
3946 |
my $node_id = $el-> |
3947 |
node_id_ref |
3948 |
; |
3949 |
my $node_uri; |
3950 |
|
3951 |
|
3952 |
{ |
3953 |
|
3954 |
if |
3955 |
(@{$opt{forp_arg}} == 0) { |
3956 |
$node_uri = $$node_id; |
3957 |
} else { |
3958 |
my $__turi = $$node_id; |
3959 |
my $__furi = |
3960 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all' |
3961 |
; |
3962 |
for my $__uri ($__turi, $__furi) { |
3963 |
$__uri =~ s{([^0-9A-Za-z!\$'()*,:;=?\@_./~-])}{sprintf '%%%02X', ord $1}ge; |
3964 |
} |
3965 |
my @__fp; |
3966 |
for my $__uri (@{$opt{forp_arg}}) { |
3967 |
my $__fpuri = $__uri; |
3968 |
$__fpuri =~ s{([^0-9A-Za-z!\$'()*,:;=?\@_./~-])} |
3969 |
{sprintf '%%%02X', ord $1}ge; |
3970 |
push @__fp, $__fpuri; |
3971 |
} |
3972 |
$node_uri = qq<tag:suika.fam.cx,2005-09:$__turi+$__furi+>.join ('+', @__fp); |
3973 |
} |
3974 |
|
3975 |
|
3976 |
} |
3977 |
|
3978 |
; |
3979 |
|
3980 |
my $al_node = $el-> |
3981 |
dis_get_attribute |
3982 |
|
3983 |
( |
3984 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AliasFor' |
3985 |
, |
3986 |
forp_arg => $opt{forp_arg}, |
3987 |
database_arg => $self); |
3988 |
my $al_canon_uri; |
3989 |
if ($al_node) { |
3990 |
$al_canon_uri = $al_node->qname_value_uri; |
3991 |
} |
3992 |
|
3993 |
## User defined resource identifiers |
3994 |
my $qn_node = $el-> |
3995 |
dis_get_attribute |
3996 |
|
3997 |
( |
3998 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--QName' |
3999 |
, |
4000 |
forp_arg => $opt{forp_arg}, |
4001 |
database_arg => $self); |
4002 |
my $res; |
4003 |
ALD: { |
4004 |
if ($qn_node) { |
4005 |
my $qn_urif = $qn_node-> |
4006 |
qname_value_uri |
4007 |
; |
4008 |
push @res_uri, $qn_urif; |
4009 |
$res = $self-> |
4010 |
get_resource |
4011 |
($qn_urif); |
4012 |
if ($res-> |
4013 |
is_defined |
4014 |
) { |
4015 |
last ALD if defined $al_canon_uri and |
4016 |
$res->{aliasURI}->{$al_canon_uri}; |
4017 |
|
4018 |
|
4019 |
{ |
4020 |
|
4021 |
local $Error::Depth = $Error::Depth - 1; |
4022 |
|
4023 |
{ |
4024 |
|
4025 |
|
4026 |
|
4027 |
|
4028 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $qn_node, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_resource', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#anotherSourceNode' => $res->{src}, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_ALREADY_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $qn_urif; |
4029 |
|
4030 |
; |
4031 |
|
4032 |
|
4033 |
|
4034 |
} |
4035 |
|
4036 |
|
4037 |
;} |
4038 |
|
4039 |
; |
4040 |
} |
4041 |
my $v = $qn_node-> |
4042 |
qname_value_local_name |
4043 |
; |
4044 |
|
4045 |
|
4046 |
{ |
4047 |
|
4048 |
if |
4049 |
(defined $v) { |
4050 |
if (ref $v eq 'SCALAR') { |
4051 |
$res->{localName} = $v; |
4052 |
} elsif (defined $Message::Util::ManakaiStringRef::Value{$v}) { |
4053 |
$res->{localName} = $Message::Util::ManakaiStringRef::Value{$v}; |
4054 |
} else { |
4055 |
require Scalar::Util; |
4056 |
$res->{localName} = $Message::Util::ManakaiStringRef::Value{$v} = \($v); |
4057 |
Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{$v}); |
4058 |
} |
4059 |
} else { |
4060 |
CORE::delete $res->{localName}; |
4061 |
} |
4062 |
|
4063 |
|
4064 |
} |
4065 |
|
4066 |
; |
4067 |
my $ns = $qn_node-> |
4068 |
qname_value_namespace_uri |
4069 |
; |
4070 |
|
4071 |
|
4072 |
{ |
4073 |
|
4074 |
if |
4075 |
(defined $ns) { |
4076 |
if (ref $ns eq 'SCALAR') { |
4077 |
$res->{namespaceURI} = $ns; |
4078 |
} elsif (defined $Message::Util::ManakaiStringRef::Value{$ns}) { |
4079 |
$res->{namespaceURI} = $Message::Util::ManakaiStringRef::Value{$ns}; |
4080 |
} else { |
4081 |
require Scalar::Util; |
4082 |
$res->{namespaceURI} = $Message::Util::ManakaiStringRef::Value{$ns} = \($ns); |
4083 |
Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{$ns}); |
4084 |
} |
4085 |
} else { |
4086 |
CORE::delete $res->{namespaceURI}; |
4087 |
} |
4088 |
|
4089 |
|
4090 |
} |
4091 |
|
4092 |
; |
4093 |
} else { ## Anonymous or local |
4094 |
my $n_node = $el-> |
4095 |
dis_get_attribute |
4096 |
|
4097 |
( |
4098 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Name' |
4099 |
, |
4100 |
forp_arg => $opt{forp_arg}, |
4101 |
database_arg => $self); |
4102 |
if ($n_node) { |
4103 |
if ($parentResource) { |
4104 |
my $puri = $parentResource->{uri}; |
4105 |
my $ru; |
4106 |
my $ruf; |
4107 |
my $ln = $n_node-> |
4108 |
value |
4109 |
; |
4110 |
|
4111 |
|
4112 |
{ |
4113 |
|
4114 |
my |
4115 |
$__parent = $puri; |
4116 |
my $__ln = $ln; |
4117 |
for my $__uri ($__parent, $__ln) { |
4118 |
$__uri =~ s{([^0-9A-Za-z!\$'(),*:;=?\@_./~-])}{sprintf '%%%02X', ord $1}ge; |
4119 |
} |
4120 |
$ru = qq<data:suika.fam.cx,2005-09::$__parent+$__ln>; |
4121 |
|
4122 |
|
4123 |
} |
4124 |
|
4125 |
; |
4126 |
$ruf = $ru; |
4127 |
push @res_uri, $ruf; |
4128 |
$res = $self-> |
4129 |
get_resource |
4130 |
($ruf); |
4131 |
my $v = $n_node-> |
4132 |
value |
4133 |
; |
4134 |
|
4135 |
|
4136 |
{ |
4137 |
|
4138 |
if |
4139 |
(defined $v) { |
4140 |
if (ref $v eq 'SCALAR') { |
4141 |
$res->{localName} = $v; |
4142 |
} elsif (defined $Message::Util::ManakaiStringRef::Value{$v}) { |
4143 |
$res->{localName} = $Message::Util::ManakaiStringRef::Value{$v}; |
4144 |
} else { |
4145 |
require Scalar::Util; |
4146 |
$res->{localName} = $Message::Util::ManakaiStringRef::Value{$v} = \($v); |
4147 |
Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{$v}); |
4148 |
} |
4149 |
} else { |
4150 |
CORE::delete $res->{localName}; |
4151 |
} |
4152 |
|
4153 |
|
4154 |
} |
4155 |
|
4156 |
; |
4157 |
$res->{ |
4158 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isAnon' |
4159 |
} = |
4160 |
1 |
4161 |
; |
4162 |
} else { ## Root local name resource |
4163 |
my $ln = $n_node-> |
4164 |
value |
4165 |
; |
4166 |
my $ns_uri = $mod-> |
4167 |
source_element |
4168 |
|
4169 |
-> |
4170 |
defining_namespace_uri |
4171 |
; |
4172 |
my $qn_urif = $ns_uri . $ln; |
4173 |
push @res_uri, $qn_urif; |
4174 |
$res = $self-> |
4175 |
get_resource |
4176 |
($qn_urif); |
4177 |
if ($res-> |
4178 |
is_defined |
4179 |
) { |
4180 |
last ALD if defined $al_canon_uri and |
4181 |
$res->{aliasURI}->{$al_canon_uri}; |
4182 |
|
4183 |
|
4184 |
{ |
4185 |
|
4186 |
local $Error::Depth = $Error::Depth - 1; |
4187 |
|
4188 |
{ |
4189 |
|
4190 |
|
4191 |
|
4192 |
|
4193 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $n_node, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_resource', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#anotherSourceNode' => $res->source_element, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_ALREADY_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $res->uri; |
4194 |
|
4195 |
; |
4196 |
|
4197 |
|
4198 |
|
4199 |
} |
4200 |
|
4201 |
|
4202 |
;} |
4203 |
|
4204 |
; |
4205 |
} |
4206 |
|
4207 |
|
4208 |
{ |
4209 |
|
4210 |
if |
4211 |
(defined $ns_uri) { |
4212 |
if (ref $ns_uri eq 'SCALAR') { |
4213 |
$res->{namespaceURI} = $ns_uri; |
4214 |
} elsif (defined $Message::Util::ManakaiStringRef::Value{$ns_uri}) { |
4215 |
$res->{namespaceURI} = $Message::Util::ManakaiStringRef::Value{$ns_uri}; |
4216 |
} else { |
4217 |
require Scalar::Util; |
4218 |
$res->{namespaceURI} = $Message::Util::ManakaiStringRef::Value{$ns_uri} = \($ns_uri); |
4219 |
Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{$ns_uri}); |
4220 |
} |
4221 |
} else { |
4222 |
CORE::delete $res->{namespaceURI}; |
4223 |
} |
4224 |
|
4225 |
|
4226 |
} |
4227 |
|
4228 |
; |
4229 |
|
4230 |
|
4231 |
{ |
4232 |
|
4233 |
if |
4234 |
(defined $ln) { |
4235 |
if (ref $ln eq 'SCALAR') { |
4236 |
$res->{localName} = $ln; |
4237 |
} elsif (defined $Message::Util::ManakaiStringRef::Value{$ln}) { |
4238 |
$res->{localName} = $Message::Util::ManakaiStringRef::Value{$ln}; |
4239 |
} else { |
4240 |
require Scalar::Util; |
4241 |
$res->{localName} = $Message::Util::ManakaiStringRef::Value{$ln} = \($ln); |
4242 |
Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{$ln}); |
4243 |
} |
4244 |
} else { |
4245 |
CORE::delete $res->{localName}; |
4246 |
} |
4247 |
|
4248 |
|
4249 |
} |
4250 |
|
4251 |
; |
4252 |
} |
4253 |
} else { |
4254 |
push @res_uri, $node_uri; |
4255 |
$res = $self-> |
4256 |
get_resource |
4257 |
($node_uri); |
4258 |
$res->{ |
4259 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isAnon' |
4260 |
} = |
4261 |
1 |
4262 |
; |
4263 |
} |
4264 |
} # anon |
4265 |
$res->{forp} = $opt{forp_arg}; |
4266 |
$res->{src} = $el; |
4267 |
$res->{ |
4268 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#definingModule' |
4269 |
} = \ ($mod->{uri}); |
4270 |
$res-> |
4271 |
parent_resource |
4272 |
|
4273 |
($parentResource) if $parentResource; |
4274 |
$res-> |
4275 |
dynamic_parent_resource |
4276 |
|
4277 |
($dynParent) if $dynParent; |
4278 |
unless ($res->{uri} eq $node_uri) { |
4279 |
push @res_uri, $node_uri; |
4280 |
my $nu_res = $self-> |
4281 |
get_resource |
4282 |
($node_uri); |
4283 |
$res-> |
4284 |
merge_as_alias |
4285 |
($nu_res); |
4286 |
} |
4287 |
$res->{seq} = $self->{seq}++; |
4288 |
$res-> |
4289 |
source_node_id_ref |
4290 |
($node_id); |
4291 |
|
4292 |
|
4293 |
{ |
4294 |
|
4295 |
|
4296 |
$res->{ |
4297 |
'r' |
4298 |
} = time; |
4299 |
|
4300 |
|
4301 |
} |
4302 |
|
4303 |
; |
4304 |
$mod-> |
4305 |
add_resource_uri |
4306 |
($_) for @res_uri; |
4307 |
|
4308 |
## -- Alias |
4309 |
if ($al_node) { |
4310 |
my $canon_res = $self-> |
4311 |
get_resource |
4312 |
($al_canon_uri); |
4313 |
$canon_res-> |
4314 |
is_referred |
4315 |
($al_node); |
4316 |
$canon_res-> |
4317 |
merge_as_alias |
4318 |
|
4319 |
($res, node => $al_node, no_equality_check => |
4320 |
1 |
4321 |
); |
4322 |
$res = $canon_res; |
4323 |
} else { |
4324 |
$res->{ |
4325 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isDefined' |
4326 |
} = |
4327 |
1 |
4328 |
; |
4329 |
} |
4330 |
} # ALD |
4331 |
|
4332 |
## -- Registers as child |
4333 |
$parentResource-> |
4334 |
_add_child_resource |
4335 |
($res) |
4336 |
if $parentResource; |
4337 |
$dynParent-> |
4338 |
_add_dynamic_child_resource |
4339 |
($res) |
4340 |
if $dynParent; |
4341 |
|
4342 |
my $is_multires = |
4343 |
0 |
4344 |
; |
4345 |
my @props; |
4346 |
my @cres; |
4347 |
my @ce0 = @{$el-> |
4348 |
dis_child_elements |
4349 |
|
4350 |
(forp_arg => $opt{forp_arg}, |
4351 |
database_arg => $self)}; |
4352 |
my $has_type = $al_node; |
4353 |
while (@ce0) { |
4354 |
my $ce = shift @ce0; |
4355 |
if ($ce-> |
4356 |
element_type_match |
4357 |
|
4358 |
( |
4359 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#resourceType' |
4360 |
, database_arg => $self, |
4361 |
srinfo => $opt{srinfo}) or |
4362 |
$ce-> |
4363 |
element_type_match |
4364 |
( |
4365 |
'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' |
4366 |
, |
4367 |
database_arg => $self, |
4368 |
srinfo => $opt{srinfo})) { |
4369 |
## TODO: Remove this. |
4370 |
$has_type = |
4371 |
1 |
4372 |
; |
4373 |
my $type_uri = $ce-> |
4374 |
qname_value_uri |
4375 |
; |
4376 |
my $type = $self-> |
4377 |
get_resource |
4378 |
($type_uri); |
4379 |
$res-> |
4380 |
add_type_uri |
4381 |
($type_uri, |
4382 |
srinfo => $opt{srinfo}); |
4383 |
$type-> |
4384 |
is_referred |
4385 |
($ce); |
4386 |
if ($type-> |
4387 |
is_subset_of_uri |
4388 |
|
4389 |
( |
4390 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--MultipleResource' |
4391 |
, |
4392 |
srinfo => $opt{srinfo})) { |
4393 |
$is_multires = |
4394 |
1 |
4395 |
; |
4396 |
} |
4397 |
} elsif ($ce-> |
4398 |
element_type_match |
4399 |
|
4400 |
( |
4401 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--subsetOf' |
4402 |
, |
4403 |
database_arg => $self, |
4404 |
srinfo => $opt{srinfo})) { |
4405 |
my $sres = $self-> |
4406 |
get_resource |
4407 |
|
4408 |
($ce->qname_value_uri); |
4409 |
$res-> |
4410 |
add_super_resource |
4411 |
($sres, srinfo => $opt{srinfo}); |
4412 |
} elsif ($ce-> |
4413 |
is_resource_element |
4414 |
) { |
4415 |
push @cres, $ce; |
4416 |
} elsif ($ce-> |
4417 |
element_type_match |
4418 |
|
4419 |
( |
4420 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--dataType' |
4421 |
, |
4422 |
database_arg => $self, |
4423 |
srinfo => $opt{srinfo})) { |
4424 |
my $uri = $ce-> |
4425 |
qname_value_uri |
4426 |
; |
4427 |
|
4428 |
|
4429 |
{ |
4430 |
|
4431 |
|
4432 |
$res->{'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--dataType'} = |
4433 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value |
4434 |
|
4435 |
( |
4436 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI' |
4437 |
, $uri); |
4438 |
|
4439 |
|
4440 |
{ |
4441 |
|
4442 |
local $Error::Depth = $Error::Depth + 1; |
4443 |
|
4444 |
{ |
4445 |
|
4446 |
|
4447 |
|
4448 |
$res->{'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--dataType'}-> |
4449 |
name |
4450 |
($ce->expanded_uri); |
4451 |
|
4452 |
|
4453 |
|
4454 |
} |
4455 |
|
4456 |
|
4457 |
;} |
4458 |
|
4459 |
; |
4460 |
|
4461 |
|
4462 |
} |
4463 |
|
4464 |
; |
4465 |
my $type = $self-> |
4466 |
get_resource |
4467 |
($uri); |
4468 |
$type-> |
4469 |
is_referred |
4470 |
($ce); |
4471 |
} elsif ($ce-> |
4472 |
element_type_match |
4473 |
|
4474 |
( |
4475 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--multipleProperties' |
4476 |
, |
4477 |
database_arg => $self, |
4478 |
srinfo => $opt{srinfo})) { |
4479 |
my $uri = $ce-> |
4480 |
qname_value_uri |
4481 |
; |
4482 |
|
4483 |
|
4484 |
{ |
4485 |
|
4486 |
|
4487 |
$res->{'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--multipleProperties'} = |
4488 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value |
4489 |
|
4490 |
( |
4491 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI' |
4492 |
, $uri); |
4493 |
|
4494 |
|
4495 |
{ |
4496 |
|
4497 |
local $Error::Depth = $Error::Depth + 1; |
4498 |
|
4499 |
{ |
4500 |
|
4501 |
|
4502 |
|
4503 |
$res->{'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--multipleProperties'}-> |
4504 |
name |
4505 |
($ce->expanded_uri); |
4506 |
|
4507 |
|
4508 |
|
4509 |
} |
4510 |
|
4511 |
|
4512 |
;} |
4513 |
|
4514 |
; |
4515 |
|
4516 |
|
4517 |
} |
4518 |
|
4519 |
; |
4520 |
my $type = $self-> |
4521 |
get_resource |
4522 |
($uri); |
4523 |
$type-> |
4524 |
is_referred |
4525 |
($ce); |
4526 |
} else { |
4527 |
## Property and invalid element is not checked, since not |
4528 |
## all property definitions has loaded at this stage. |
4529 |
push @props, $ce; |
4530 |
} |
4531 |
} # @ce0 |
4532 |
|
4533 |
unless ($has_type) { |
4534 |
|
4535 |
|
4536 |
{ |
4537 |
|
4538 |
local $Error::Depth = $Error::Depth - 1; |
4539 |
|
4540 |
{ |
4541 |
|
4542 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $el, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'load_resource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_RDF_TYPE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $res->{uri}; |
4543 |
|
4544 |
|
4545 |
} |
4546 |
|
4547 |
|
4548 |
;} |
4549 |
|
4550 |
; |
4551 |
} |
4552 |
|
4553 |
my $srres = $opt{srinfo}->{resource}->{$res-> |
4554 |
uri |
4555 |
}; |
4556 |
F: for my $auri (keys %{$srres->{aliasURI} or {}}) { |
4557 |
next F unless $srres->{aliasURI}->{$auri}; |
4558 |
$res->{aliasURI}->{$auri} = |
4559 |
1 |
4560 |
; |
4561 |
$self->{resDef}->{$auri} = $res; |
4562 |
A: for (keys %{$res->{subOf} or {}}) { |
4563 |
next A unless $res->{subOf}->{$_}; |
4564 |
my $s = $self-> |
4565 |
get_resource |
4566 |
($_); |
4567 |
$s->{supOf}->{$auri} = |
4568 |
1 |
4569 |
; |
4570 |
} |
4571 |
A: for (keys %{$res->{supOf} or {}}) { |
4572 |
next A unless $res->{supOf}->{$_}; |
4573 |
my $s = $self-> |
4574 |
get_resource |
4575 |
($_); |
4576 |
$s->{subOf}->{$auri} = |
4577 |
1 |
4578 |
; |
4579 |
} |
4580 |
} |
4581 |
F: for my $suri (keys %{$srres->{supOf} or {}}) { |
4582 |
next F unless $srres->{supOf}->{$suri}; |
4583 |
my $sres = $self-> |
4584 |
get_resource |
4585 |
($suri); |
4586 |
$sres-> |
4587 |
add_super_resource |
4588 |
($res, srinfo => $opt{srinfo}); |
4589 |
} |
4590 |
F: for my $suri (keys %{$srres->{subOf} or {}}) { |
4591 |
next F unless $srres->{subOf}->{$suri}; |
4592 |
my $sres = $self-> |
4593 |
get_resource |
4594 |
($suri); |
4595 |
$res-> |
4596 |
add_super_resource |
4597 |
($sres, srinfo => $opt{srinfo}); |
4598 |
} |
4599 |
|
4600 |
## -- Child resources |
4601 |
if (not $is_multires and not $al_node) { |
4602 |
for my $re (@cres) { |
4603 |
$self-> |
4604 |
load_resource |
4605 |
|
4606 |
($mod, $res, $res, $re, |
4607 |
forp_arg => $opt{forp_arg}, |
4608 |
on_resource_read => $opt{on_resource_read}, |
4609 |
srinfo => $opt{srinfo}); |
4610 |
} |
4611 |
} |
4612 |
|
4613 |
## -- Multiple representations |
4614 |
if ($is_multires) { |
4615 |
for my $pe (@props) { |
4616 |
if ($pe-> |
4617 |
element_type_match |
4618 |
|
4619 |
( |
4620 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--resourceFor' |
4621 |
, |
4622 |
database_arg => $self, |
4623 |
srinfo => $opt{srinfo})) { |
4624 |
my $for_uri = $pe-> |
4625 |
qname_value_uri |
4626 |
; |
4627 |
my $for = $self-> |
4628 |
get_for |
4629 |
($for_uri); |
4630 |
$for-> |
4631 |
is_referred |
4632 |
($pe); |
4633 |
$self-> |
4634 |
load_resource |
4635 |
|
4636 |
($mod, $parentResource, $res, $el, |
4637 |
forp_arg => [@{$opt{forp_arg}}, $for_uri], |
4638 |
on_resource_read => $opt{on_resource_read}, |
4639 |
srinfo => $opt{srinfo}); |
4640 |
} |
4641 |
} |
4642 |
} |
4643 |
($opt{on_resource_read} or sub {})->($self, $res); |
4644 |
|
4645 |
|
4646 |
|
4647 |
} |
4648 |
|
4649 |
|
4650 |
;} |
4651 |
|
4652 |
; # DEEP |
4653 |
|
4654 |
|
4655 |
} |
4656 |
} |
4657 |
sub read_properties ($%) { |
4658 |
my ($self, %opt) = @_; |
4659 |
|
4660 |
{ |
4661 |
|
4662 |
|
4663 |
{ |
4664 |
|
4665 |
local $Error::Depth = $Error::Depth + 1; |
4666 |
|
4667 |
{ |
4668 |
|
4669 |
|
4670 |
F: |
4671 |
for my $fd (values %{$self->{modDef}}, |
4672 |
values %{$self->{forDef}}, |
4673 |
values %{$self->{resDef}}) { |
4674 |
next F if $fd->isa ( |
4675 |
'Message::Util::DIS::ManakaiDISModuleLite' |
4676 |
); |
4677 |
if ($fd-> |
4678 |
is_defined |
4679 |
) { |
4680 |
$fd-> |
4681 |
read_properties |
4682 |
|
4683 |
(on_resource_read => $opt{on_resource_read}, |
4684 |
implementation => $opt{implementation}); |
4685 |
} |
4686 |
} |
4687 |
CORE::delete $self->{ |
4688 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceFile' |
4689 |
}; |
4690 |
|
4691 |
|
4692 |
|
4693 |
} |
4694 |
|
4695 |
|
4696 |
;} |
4697 |
|
4698 |
; |
4699 |
|
4700 |
|
4701 |
} |
4702 |
} |
4703 |
sub check_undefined_resource ($) { |
4704 |
my ($self) = @_; |
4705 |
|
4706 |
{ |
4707 |
|
4708 |
for |
4709 |
my $fd (values %{$self->{forDef}}) { |
4710 |
if (my $ref = $fd-> |
4711 |
is_referred and |
4712 |
|
4713 |
not $fd-> |
4714 |
is_defined |
4715 |
) { |
4716 |
|
4717 |
report Message::Util::DIS::ManakaiDISException -object => $self, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'check_undefined_resource', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNodePath' => $ref, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#FOR_NOT_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $fd->uri; |
4718 |
|
4719 |
; |
4720 |
} |
4721 |
} |
4722 |
for my $fd (values %{$self->{resDef}}) { |
4723 |
if (my $ref = $fd-> |
4724 |
is_referred and |
4725 |
|
4726 |
not $fd-> |
4727 |
is_defined |
4728 |
) { |
4729 |
|
4730 |
report Message::Util::DIS::ManakaiDISException -object => $self, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'check_undefined_resource', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNodePath' => $ref, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_NOT_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $fd->uri; |
4731 |
|
4732 |
; |
4733 |
} |
4734 |
} |
4735 |
|
4736 |
|
4737 |
} |
4738 |
} |
4739 |
sub unload_module ($$%) { |
4740 |
my ($self, $module, %opt) = @_; |
4741 |
my $r = {}; |
4742 |
|
4743 |
{ |
4744 |
|
4745 |
|
4746 |
{ |
4747 |
|
4748 |
local $Error::Depth = $Error::Depth + 1; |
4749 |
|
4750 |
{ |
4751 |
|
4752 |
|
4753 |
|
4754 |
$r = $opt{srinfo} || {}; |
4755 |
|
4756 |
## -- |For|s |
4757 |
F: for my $for (@{$module-> |
4758 |
get_for_resource_list |
4759 |
}) { |
4760 |
my $uri = $for-> |
4761 |
uri |
4762 |
; |
4763 |
A: for (%{$for->{ISA} or {}}) { |
4764 |
next A unless $for->{ISA}->{$_}; |
4765 |
my $sfor = $self-> |
4766 |
get_for |
4767 |
($_); |
4768 |
next A unless $sfor; |
4769 |
delete $sfor->{revISA}->{$uri}; |
4770 |
} |
4771 |
A: for (%{$for->{revISA} or {}}) { |
4772 |
next A unless $for->{revISA}->{$_}; |
4773 |
my $sfor = $self-> |
4774 |
get_for |
4775 |
($_); |
4776 |
next A unless $sfor; |
4777 |
delete $sfor->{ISA}->{$uri}; |
4778 |
$r->{for}->{$uri}->{supOf}->{$_} = |
4779 |
1 |
4780 |
; |
4781 |
} |
4782 |
delete $self->{forDef}->{$uri}; |
4783 |
delete $self->{ |
4784 |
'rm' |
4785 |
}->{$uri}; |
4786 |
} # F |
4787 |
|
4788 |
## -- Resources |
4789 |
my @res_list = map { |
4790 |
[$_, $self-> |
4791 |
get_resource |
4792 |
($_)] |
4793 |
} @{$module-> |
4794 |
get_resource_uri_list |
4795 |
}; |
4796 |
my %res_list = map {$_->[0] => |
4797 |
1 |
4798 |
} @res_list; |
4799 |
for my $ur (@res_list) { |
4800 |
my $uri = $ur->[0]; |
4801 |
my $res = $ur->[1]; |
4802 |
my $owner = $res-> |
4803 |
owner_module |
4804 |
; |
4805 |
if (defined $owner and $owner eq $module) { |
4806 |
## Non-alias |
4807 |
my %alias; |
4808 |
my %sub = %{$res->{supOf} or {}}; |
4809 |
A: for (keys %{$res->{aliasURI} or {}}) { |
4810 |
next A unless $res->{aliasURI}->{$_}; |
4811 |
$alias{$_} = |
4812 |
1 |
4813 |
; |
4814 |
delete $sub{$_} if $res->{aliasURI}->{$_}; |
4815 |
$r->{resource}->{$uri}->{supOf} = \%sub; |
4816 |
unless ($res_list{$_}) { |
4817 |
## Defined by other module |
4818 |
$r->{resource}->{$uri}->{aliasURI}->{$_} = |
4819 |
1 |
4820 |
; |
4821 |
} |
4822 |
} |
4823 |
A: for (keys %{$res->{subOf} or {}}) { |
4824 |
next A unless $res->{aliasURI}->{$_}; |
4825 |
my $sres = $self-> |
4826 |
get_resource |
4827 |
($_); |
4828 |
next A unless $sres; |
4829 |
delete $res->{supOf}->{$_} for keys %alias; |
4830 |
} |
4831 |
A: for (keys %{$res->{supOf} or {}}) { |
4832 |
next A unless $res->{aliasURI}->{$_}; |
4833 |
my $sres = $self-> |
4834 |
get_resource |
4835 |
($_); |
4836 |
next A unless $sres; |
4837 |
delete $res->{subOf}->{$_} for keys %alias; |
4838 |
} |
4839 |
A: for (keys %alias) { |
4840 |
delete $self->{resDef}->{$_}; |
4841 |
delete $self->{ |
4842 |
'rm' |
4843 |
}->{$_}; |
4844 |
} |
4845 |
} else { |
4846 |
## Alias |
4847 |
delete $res->{aliasURI}->{$uri}; |
4848 |
delete $res->{subOf}->{$uri}; |
4849 |
delete $res->{supOf}->{$uri}; |
4850 |
A: for (keys %{$res->{subOf} or {}}) { |
4851 |
next A unless $res->{subOf}->{$_}; |
4852 |
my $sres = $self-> |
4853 |
get_resource |
4854 |
($_); |
4855 |
next A unless $sres; |
4856 |
delete $sres->{supOf}->{$uri}; |
4857 |
} |
4858 |
A: for (keys %{$res->{supOf} or {}}) { |
4859 |
next A unless $res->{supOf}->{$_}; |
4860 |
my $sres = $self-> |
4861 |
get_resource |
4862 |
($_); |
4863 |
next A unless $sres; |
4864 |
delete $sres->{subOf}->{$uri}; |
4865 |
} |
4866 |
delete $self->{resDef}->{$uri}; |
4867 |
delete $self->{ |
4868 |
'rm' |
4869 |
}->{$uri}; |
4870 |
} |
4871 |
} |
4872 |
|
4873 |
## -- Keys |
4874 |
my $v = $module->{ |
4875 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#Perl/plHashKey' |
4876 |
}; |
4877 |
K: for my $scope (keys %{$v or {}}) { |
4878 |
my $ks = $self-> |
4879 |
get_resource |
4880 |
($scope); |
4881 |
L: for my $key (keys %{$v->{$scope} or {}}) { |
4882 |
next L unless $v->{$scope}->{$key}; |
4883 |
delete $ks->{ |
4884 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#Perl/plHashKey' |
4885 |
}->{$key}; |
4886 |
} |
4887 |
} |
4888 |
|
4889 |
## -- Module itself |
4890 |
for (@{$module-> |
4891 |
uris |
4892 |
}) { |
4893 |
delete $self->{modDef}->{$_}; |
4894 |
} |
4895 |
|
4896 |
|
4897 |
|
4898 |
} |
4899 |
|
4900 |
|
4901 |
;} |
4902 |
|
4903 |
; |
4904 |
|
4905 |
|
4906 |
} |
4907 |
$r} |
4908 |
sub xcref_to_resource ($$$%) { |
4909 |
my ($self, $xcref, $contextNode, %opt) = @_; |
4910 |
my $r = []; |
4911 |
|
4912 |
{ |
4913 |
|
4914 |
my |
4915 |
($q1, $q2, $q3) = split /\s*\.\s*/, $xcref, 3; |
4916 |
|
4917 |
|
4918 |
{ |
4919 |
|
4920 |
local $Error::Depth = $Error::Depth + 1; |
4921 |
|
4922 |
{ |
4923 |
|
4924 |
|
4925 |
if |
4926 |
(defined $q3) { |
4927 |
$r->[2] = $self-> |
4928 |
get_resource |
4929 |
|
4930 |
($contextNode-> |
4931 |
qname_to_uri |
4932 |
|
4933 |
($q3, node => $opt{node})); |
4934 |
$r->[1] = $r->[2]-> |
4935 |
parent_resource |
4936 |
; |
4937 |
} elsif (defined $q2) { |
4938 |
if ($q2 =~ /:/) { |
4939 |
$r->[1] = $self-> |
4940 |
get_resource |
4941 |
|
4942 |
($contextNode-> |
4943 |
qname_to_uri |
4944 |
|
4945 |
($q2, node => $opt{node})); |
4946 |
} else { |
4947 |
$r->[0] = $self-> |
4948 |
get_resource |
4949 |
|
4950 |
($contextNode-> |
4951 |
qname_to_uri |
4952 |
|
4953 |
($q1, node => $opt{node})); |
4954 |
$r->[1] = $r->[0]-> |
4955 |
get_const_resource_by_name |
4956 |
($q2); |
4957 |
} |
4958 |
} else { ## $q1 only |
4959 |
$r->[2] = $self-> |
4960 |
get_resource |
4961 |
|
4962 |
($contextNode-> |
4963 |
qname_to_uri |
4964 |
|
4965 |
($q1, node => $opt{node})); |
4966 |
if ($r->[2]-> |
4967 |
is_type_uri |
4968 |
( |
4969 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#ErrorSubCode' |
4970 |
)) { |
4971 |
$r->[1] = $r->[2]-> |
4972 |
parent_resource |
4973 |
; |
4974 |
} else { |
4975 |
$r->[1] = $r->[2]; CORE::delete $r->[2]; |
4976 |
} |
4977 |
} |
4978 |
|
4979 |
if ($r->[2] and |
4980 |
not $r->[2]-> |
4981 |
is_type_uri |
4982 |
( |
4983 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#ErrorSubCode' |
4984 |
)) { |
4985 |
|
4986 |
|
4987 |
{ |
4988 |
|
4989 |
local $Error::Depth = $Error::Depth - 1; |
4990 |
|
4991 |
{ |
4992 |
|
4993 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $opt{node}, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'xcref_to_resource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceCode' => $xcref, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#expectedType' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#ErrorSubCode', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_NOT_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $r->[2]->{uri}; |
4994 |
|
4995 |
|
4996 |
} |
4997 |
|
4998 |
|
4999 |
;} |
5000 |
|
5001 |
; |
5002 |
} |
5003 |
$r->[2]-> |
5004 |
is_referred |
5005 |
|
5006 |
($opt{node} or $contextNode) |
5007 |
if $r->[2]; |
5008 |
|
5009 |
if (not $r->[1] or |
5010 |
not $r->[1]-> |
5011 |
is_type_uri |
5012 |
( |
5013 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#Const' |
5014 |
)) { |
5015 |
|
5016 |
|
5017 |
{ |
5018 |
|
5019 |
local $Error::Depth = $Error::Depth - 1; |
5020 |
|
5021 |
{ |
5022 |
|
5023 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $opt{node}, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'xcref_to_resource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceCode' => $xcref, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#expectedType' => 'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#Const', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#localName' => ($r->[1] ? $r->[1]->local_name : undef), 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_NOT_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => ($r->[1] ? $r->[1]->uri |
5024 |
: undef); |
5025 |
|
5026 |
|
5027 |
} |
5028 |
|
5029 |
|
5030 |
;} |
5031 |
|
5032 |
; |
5033 |
} |
5034 |
$r->[1]-> |
5035 |
is_referred |
5036 |
|
5037 |
($opt{node} or $contextNode); |
5038 |
|
5039 |
unless ($r->[0]) { |
5040 |
my $cg = $r->[1]-> |
5041 |
parent_resource |
5042 |
; |
5043 |
$r->[0] = $cg-> |
5044 |
parent_resource if |
5045 |
$cg; |
5046 |
} |
5047 |
if (not $r->[0] or |
5048 |
not $r->[0]-> |
5049 |
is_type_uri |
5050 |
( |
5051 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#AnyExceptionAnyClass' |
5052 |
)) { |
5053 |
|
5054 |
|
5055 |
{ |
5056 |
|
5057 |
local $Error::Depth = $Error::Depth - 1; |
5058 |
|
5059 |
{ |
5060 |
|
5061 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $opt{node}, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'xcref_to_resource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceCode' => $xcref, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#expectedType' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#AnyExceptionAnyClass', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#localName' => $r->[0]->local_name, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_NOT_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $r->[0]->{uri}; |
5062 |
|
5063 |
|
5064 |
} |
5065 |
|
5066 |
|
5067 |
;} |
5068 |
|
5069 |
; |
5070 |
} |
5071 |
$r->[0]-> |
5072 |
is_referred |
5073 |
|
5074 |
($opt{node} or $contextNode); |
5075 |
|
5076 |
|
5077 |
|
5078 |
} |
5079 |
|
5080 |
|
5081 |
;} |
5082 |
|
5083 |
; |
5084 |
|
5085 |
|
5086 |
} |
5087 |
$r} |
5088 |
sub free ($) { |
5089 |
my ($self) = @_; |
5090 |
|
5091 |
{ |
5092 |
|
5093 |
for |
5094 |
my $file (values %{$self->{ |
5095 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceFile' |
5096 |
}}) { |
5097 |
$file-> |
5098 |
free |
5099 |
if |
5100 |
$file; |
5101 |
} |
5102 |
CORE::delete $self->{modDef}; |
5103 |
CORE::delete $self->{forDef}; |
5104 |
CORE::delete $self->{resDef}; |
5105 |
|
5106 |
|
5107 |
} |
5108 |
} |
5109 |
sub get_module_uri_list ($) { |
5110 |
my ($self) = @_; |
5111 |
my $r = []; |
5112 |
|
5113 |
{ |
5114 |
|
5115 |
|
5116 |
$r = [map {$_-> |
5117 |
uri |
5118 |
} values %{$self->{modDef}}]; |
5119 |
|
5120 |
|
5121 |
} |
5122 |
$r} |
5123 |
sub get_any_resource_uri_list ($) { |
5124 |
my ($self) = @_; |
5125 |
my $r = []; |
5126 |
|
5127 |
{ |
5128 |
|
5129 |
|
5130 |
$r = [keys %{$self->{ |
5131 |
'rm' |
5132 |
}}, |
5133 |
map {$_-> |
5134 |
uri |
5135 |
} values %{$self->{modDef}}]; |
5136 |
|
5137 |
|
5138 |
} |
5139 |
$r} |
5140 |
sub ___report_error ($$) { |
5141 |
my ($self, $err) = @_; |
5142 |
my $r; |
5143 |
|
5144 |
{ |
5145 |
|
5146 |
if |
5147 |
($err->isa ( |
5148 |
'Message::DOM::IF::DOMError' |
5149 |
)) { |
5150 |
|
5151 |
|
5152 |
{ |
5153 |
|
5154 |
local $Error::Depth = $Error::Depth + 1; |
5155 |
|
5156 |
{ |
5157 |
|
5158 |
|
5159 |
my |
5160 |
$cfg = $self-> |
5161 |
dom_config |
5162 |
; |
5163 |
my $h = $cfg-> |
5164 |
get_parameter |
5165 |
('error-handler'); |
5166 |
$r = $h-> |
5167 |
handle_error |
5168 |
($err); |
5169 |
|
5170 |
|
5171 |
|
5172 |
} |
5173 |
|
5174 |
|
5175 |
;} |
5176 |
|
5177 |
; |
5178 |
} else { |
5179 |
$err-> |
5180 |
throw |
5181 |
; |
5182 |
} |
5183 |
|
5184 |
|
5185 |
} |
5186 |
$r} |
5187 |
sub dom_config ($;$) { |
5188 |
if (@_ == 1) {my ($self) = @_; |
5189 |
my $r; |
5190 |
|
5191 |
{ |
5192 |
|
5193 |
|
5194 |
{ |
5195 |
|
5196 |
|
5197 |
$r = bless [$self, $self, 'Message::Util::IF::DISDatabase'], |
5198 |
|
5199 |
'Message::DOM::DOMCore::ManakaiDOMConfiguration' |
5200 |
; |
5201 |
|
5202 |
|
5203 |
} |
5204 |
|
5205 |
; |
5206 |
|
5207 |
|
5208 |
} |
5209 |
$r; |
5210 |
} else {my ($self) = @_; |
5211 |
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::Util::DIS::ManakaiDISDatabase', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dom_config'; |
5212 |
} |
5213 |
} |
5214 |
sub get_module_resource_list ($) { |
5215 |
my ($self) = @_; |
5216 |
my $r = []; |
5217 |
|
5218 |
{ |
5219 |
|
5220 |
|
5221 |
$r = [map {$self->{modDef}->{$_}} |
5222 |
grep {defined $self->{modDef}->{$_}} |
5223 |
keys %{$self->{modDef}}]; |
5224 |
|
5225 |
|
5226 |
} |
5227 |
$r} |
5228 |
$Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISDatabase>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core', |
5229 |
{'', |
5230 |
'1', |
5231 |
'1.0', |
5232 |
'1'}, |
5233 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#perl', |
5234 |
{'', |
5235 |
'1', |
5236 |
'1.0', |
5237 |
'1'}}; |
5238 |
$Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISDatabase>} = 2; |
5239 |
package Message::Util::IF::DISModuleResolver; |
5240 |
our $VERSION = 20061231.0921; |
5241 |
package Message::Util::DIS::ManakaiDISModuleResolver; |
5242 |
our $VERSION = 20061231.0921; |
5243 |
push our @ISA, 'Message::Util::IF::DISModuleResolver'; |
5244 |
sub uri_to_document ($$$$$) { |
5245 |
my ($self, $disDB, $moduleURI, $moduleNamespaceURI, $moduleLocalName) = @_; |
5246 |
my $r; |
5247 |
|
5248 |
{ |
5249 |
|
5250 |
goto |
5251 |
&$self; |
5252 |
|
5253 |
|
5254 |
} |
5255 |
$r} |
5256 |
$Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISModuleResolver>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core', |
5257 |
{'', |
5258 |
'1', |
5259 |
'1.0', |
5260 |
'1'}}; |
5261 |
$Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISModuleResolver>} = 1; |
5262 |
package Message::Util::IF::DISAnyResource; |
5263 |
our $VERSION = 20061231.0921; |
5264 |
package Message::Util::DIS::ManakaiDISAnyResource; |
5265 |
our $VERSION = 20061231.0921; |
5266 |
push our @ISA, 'Message::Util::IF::DISAnyResource'; |
5267 |
sub uri ($;$) { |
5268 |
if (@_ == 1) {my ($self) = @_; |
5269 |
my $r; |
5270 |
|
5271 |
{ |
5272 |
|
5273 |
|
5274 |
$r = $self->{uri}; |
5275 |
|
5276 |
|
5277 |
} |
5278 |
$r; |
5279 |
} else {my ($self) = @_; |
5280 |
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::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'uri'; |
5281 |
} |
5282 |
} |
5283 |
sub uri_ref ($;$) { |
5284 |
if (@_ == 1) {my ($self) = @_; |
5285 |
my $r; |
5286 |
|
5287 |
{ |
5288 |
|
5289 |
|
5290 |
$r = \ ($self->{uri}); |
5291 |
|
5292 |
|
5293 |
} |
5294 |
$r; |
5295 |
} else {my ($self) = @_; |
5296 |
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::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'uri_ref'; |
5297 |
} |
5298 |
} |
5299 |
sub uris ($;$) { |
5300 |
if (@_ == 1) {my ($self) = @_; |
5301 |
report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NOT_SUPPORTED_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/2004/8/4/manakai-dom-exception#MDOM_IMPL_ATTR_NOT_IMPLEMENTED', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'uris'; |
5302 |
} else {my ($self) = @_; |
5303 |
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::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'uris'; |
5304 |
} |
5305 |
} |
5306 |
sub is_same_resource ($$) { |
5307 |
my ($self, $anotherResource) = @_; |
5308 |
my $r = 0; |
5309 |
|
5310 |
{ |
5311 |
|
5312 |
if |
5313 |
(UNIVERSAL::isa ($anotherResource, |
5314 |
|
5315 |
'Message::Util::DIS::ManakaiDISAnyResource' |
5316 |
)) { |
5317 |
$r = $self->{uri} eq $anotherResource->{uri}; |
5318 |
} |
5319 |
|
5320 |
|
5321 |
} |
5322 |
$r} |
5323 |
sub name_uri ($;$) { |
5324 |
if (@_ == 1) {my ($self) = @_; |
5325 |
my $r; |
5326 |
|
5327 |
{ |
5328 |
|
5329 |
if |
5330 |
(defined $self->{localName}) { |
5331 |
$r = defined $self->{namespaceURI} |
5332 |
? ${$self->{namespaceURI}} . ${$self->{localName}} |
5333 |
: ${$self->{localName}}; |
5334 |
} |
5335 |
|
5336 |
|
5337 |
} |
5338 |
$r; |
5339 |
} else {my ($self) = @_; |
5340 |
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::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'name_uri'; |
5341 |
} |
5342 |
} |
5343 |
sub local_name ($;$) { |
5344 |
if (@_ == 1) {my ($self) = @_; |
5345 |
my $r; |
5346 |
|
5347 |
{ |
5348 |
|
5349 |
|
5350 |
$r = defined $self->{localName} ? ${$self->{localName}} : |
5351 |
undef |
5352 |
; |
5353 |
|
5354 |
|
5355 |
} |
5356 |
$r; |
5357 |
} else {my ($self) = @_; |
5358 |
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::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'local_name'; |
5359 |
} |
5360 |
} |
5361 |
sub namespace_uri ($;$) { |
5362 |
if (@_ == 1) {my ($self) = @_; |
5363 |
my $r; |
5364 |
|
5365 |
{ |
5366 |
|
5367 |
|
5368 |
$r = defined $self->{namespaceURI} ? ${$self->{namespaceURI}} : |
5369 |
undef |
5370 |
; |
5371 |
|
5372 |
|
5373 |
} |
5374 |
$r; |
5375 |
} else {my ($self) = @_; |
5376 |
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::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'namespace_uri'; |
5377 |
} |
5378 |
} |
5379 |
sub forp_uri ($;$) { |
5380 |
if (@_ == 1) {my ($self) = @_; |
5381 |
my $r; |
5382 |
|
5383 |
{ |
5384 |
|
5385 |
|
5386 |
$r = [@{$self->{forp}}]; |
5387 |
|
5388 |
|
5389 |
} |
5390 |
$r; |
5391 |
} else {my ($self) = @_; |
5392 |
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::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'forp_uri'; |
5393 |
} |
5394 |
} |
5395 |
sub is_for_uri ($$) { |
5396 |
my ($self, $forURI) = @_; |
5397 |
my $r = 0; |
5398 |
|
5399 |
{ |
5400 |
|
5401 |
|
5402 |
{ |
5403 |
|
5404 |
local $Error::Depth = $Error::Depth + 1; |
5405 |
|
5406 |
{ |
5407 |
|
5408 |
|
5409 |
C: |
5410 |
for my $this_for_uri ( |
5411 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all' |
5412 |
, @{$self->{forp}||[]}) { |
5413 |
if ($this_for_uri eq $forURI) { ## Shortcut |
5414 |
$r = |
5415 |
1 |
5416 |
; |
5417 |
last C; |
5418 |
} |
5419 |
my $this_for = $self-> |
5420 |
database |
5421 |
|
5422 |
-> |
5423 |
get_for |
5424 |
|
5425 |
($this_for_uri); |
5426 |
if ($this_for-> |
5427 |
isa_uri |
5428 |
($forURI)) { |
5429 |
$r = |
5430 |
1 |
5431 |
; |
5432 |
last C; |
5433 |
} |
5434 |
} |
5435 |
|
5436 |
|
5437 |
|
5438 |
} |
5439 |
|
5440 |
|
5441 |
;} |
5442 |
|
5443 |
; |
5444 |
|
5445 |
|
5446 |
} |
5447 |
$r} |
5448 |
sub is_defined ($;$) { |
5449 |
if (@_ == 1) {my ($self) = @_; |
5450 |
my $r = 0; |
5451 |
|
5452 |
{ |
5453 |
|
5454 |
|
5455 |
$r = $self->{ |
5456 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isDefined' |
5457 |
}; |
5458 |
|
5459 |
|
5460 |
} |
5461 |
$r; |
5462 |
} else {my ($self, $given) = @_; |
5463 |
|
5464 |
{ |
5465 |
|
5466 |
|
5467 |
$self->{ |
5468 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isDefined' |
5469 |
} = $given; |
5470 |
|
5471 |
|
5472 |
} |
5473 |
} |
5474 |
} |
5475 |
sub owner_module ($;$) { |
5476 |
if (@_ == 1) {my ($self) = @_; |
5477 |
my $r; |
5478 |
|
5479 |
{ |
5480 |
|
5481 |
|
5482 |
$r = $self-> |
5483 |
database |
5484 |
|
5485 |
-> |
5486 |
get_module |
5487 |
|
5488 |
(${$self->{ |
5489 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#definingModule' |
5490 |
}}) |
5491 |
if defined $self->{ |
5492 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#definingModule' |
5493 |
}; |
5494 |
|
5495 |
|
5496 |
} |
5497 |
$r; |
5498 |
} else {my ($self) = @_; |
5499 |
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::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'owner_module'; |
5500 |
} |
5501 |
} |
5502 |
sub owner_module_uri ($;$) { |
5503 |
if (@_ == 1) {my ($self) = @_; |
5504 |
my $r; |
5505 |
|
5506 |
{ |
5507 |
|
5508 |
if |
5509 |
(defined $self->{ |
5510 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#definingModule' |
5511 |
}) { |
5512 |
$r = ${$self->{ |
5513 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#definingModule' |
5514 |
}}; |
5515 |
} |
5516 |
|
5517 |
|
5518 |
} |
5519 |
$r; |
5520 |
} else {my ($self) = @_; |
5521 |
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::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'owner_module_uri'; |
5522 |
} |
5523 |
} |
5524 |
sub owner_module_uri_ref ($;$) { |
5525 |
if (@_ == 1) {my ($self) = @_; |
5526 |
my $r; |
5527 |
|
5528 |
{ |
5529 |
|
5530 |
|
5531 |
$r = $self->{ |
5532 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#definingModule' |
5533 |
}; |
5534 |
|
5535 |
|
5536 |
} |
5537 |
$r; |
5538 |
} else {my ($self, $given) = @_; |
5539 |
|
5540 |
{ |
5541 |
|
5542 |
|
5543 |
$self->{ |
5544 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#definingModule' |
5545 |
} = $given; |
5546 |
|
5547 |
|
5548 |
} |
5549 |
} |
5550 |
} |
5551 |
sub is_referred ($;$) { |
5552 |
if (@_ == 1) {my ($self) = @_; |
5553 |
my $r = ''; |
5554 |
|
5555 |
{ |
5556 |
|
5557 |
|
5558 |
$r = $self->{ |
5559 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isReferred' |
5560 |
}; |
5561 |
|
5562 |
|
5563 |
} |
5564 |
$r; |
5565 |
} else {my ($self, $given) = @_; |
5566 |
|
5567 |
{ |
5568 |
|
5569 |
if |
5570 |
(defined $given) { |
5571 |
if (ref $given) { |
5572 |
|
5573 |
|
5574 |
{ |
5575 |
|
5576 |
local $Error::Depth = $Error::Depth + 1; |
5577 |
|
5578 |
{ |
5579 |
|
5580 |
|
5581 |
if |
5582 |
($given->isa ( |
5583 |
'Message::Util::IF::DVValue' |
5584 |
)) { |
5585 |
$given = $given-> |
5586 |
source_node_path |
5587 |
; |
5588 |
} else { |
5589 |
$given = $given-> |
5590 |
flag |
5591 |
('nodePath') || |
5592 |
$given-> |
5593 |
node_path |
5594 |
|
5595 |
(key => [qw/QName Name type Type/]); |
5596 |
} |
5597 |
|
5598 |
|
5599 |
|
5600 |
} |
5601 |
|
5602 |
|
5603 |
;} |
5604 |
|
5605 |
; |
5606 |
} |
5607 |
$self->{ |
5608 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isReferred' |
5609 |
} = $given; |
5610 |
} |
5611 |
|
5612 |
|
5613 |
} |
5614 |
} |
5615 |
} |
5616 |
sub source_node_id ($;$) { |
5617 |
if (@_ == 1) {my ($self) = @_; |
5618 |
my $r; |
5619 |
|
5620 |
{ |
5621 |
|
5622 |
if |
5623 |
(defined $self->{ |
5624 |
'snid' |
5625 |
}) { |
5626 |
$r = ${$self->{ |
5627 |
'snid' |
5628 |
}}; |
5629 |
} else { |
5630 |
$r = |
5631 |
undef |
5632 |
; |
5633 |
} |
5634 |
|
5635 |
|
5636 |
} |
5637 |
$r; |
5638 |
} else {my ($self, $given) = @_; |
5639 |
|
5640 |
{ |
5641 |
|
5642 |
if |
5643 |
(defined $given) { |
5644 |
$self->{ |
5645 |
'snid' |
5646 |
} = \$given; |
5647 |
} else { |
5648 |
CORE::delete $self->{ |
5649 |
'snid' |
5650 |
}; |
5651 |
} |
5652 |
|
5653 |
|
5654 |
} |
5655 |
} |
5656 |
} |
5657 |
sub source_node_id_ref ($;$) { |
5658 |
if (@_ == 1) {my ($self) = @_; |
5659 |
my $r; |
5660 |
|
5661 |
{ |
5662 |
|
5663 |
|
5664 |
$r = $self->{ |
5665 |
'snid' |
5666 |
}; |
5667 |
|
5668 |
|
5669 |
} |
5670 |
$r; |
5671 |
} else {my ($self, $given) = @_; |
5672 |
|
5673 |
{ |
5674 |
|
5675 |
if |
5676 |
(defined $given) { |
5677 |
$self->{ |
5678 |
'snid' |
5679 |
} = $given; |
5680 |
} else { |
5681 |
CORE::delete $self->{ |
5682 |
'snid' |
5683 |
}; |
5684 |
} |
5685 |
|
5686 |
|
5687 |
} |
5688 |
} |
5689 |
} |
5690 |
sub is_anonymous ($;$) { |
5691 |
if (@_ == 1) {my ($self) = @_; |
5692 |
my $r = 0; |
5693 |
|
5694 |
{ |
5695 |
|
5696 |
|
5697 |
$r = $self->{ |
5698 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isAnon' |
5699 |
}; |
5700 |
|
5701 |
|
5702 |
} |
5703 |
$r; |
5704 |
} else {my ($self, $given) = @_; |
5705 |
|
5706 |
{ |
5707 |
|
5708 |
|
5709 |
$self->{ |
5710 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isAnon' |
5711 |
} = $given; |
5712 |
|
5713 |
|
5714 |
} |
5715 |
} |
5716 |
} |
5717 |
sub source_element ($;$) { |
5718 |
if (@_ == 1) {my ($self) = @_; |
5719 |
my $r; |
5720 |
|
5721 |
{ |
5722 |
|
5723 |
|
5724 |
$r = $self->{src}; |
5725 |
|
5726 |
|
5727 |
} |
5728 |
$r; |
5729 |
} else {my ($self) = @_; |
5730 |
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::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'source_element'; |
5731 |
} |
5732 |
} |
5733 |
sub database ($;$) { |
5734 |
if (@_ == 1) {my ($self) = @_; |
5735 |
my $r; |
5736 |
|
5737 |
{ |
5738 |
|
5739 |
|
5740 |
$r = $self->{db}; |
5741 |
|
5742 |
|
5743 |
} |
5744 |
$r; |
5745 |
} else {my ($self) = @_; |
5746 |
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::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'database'; |
5747 |
} |
5748 |
} |
5749 |
sub read_properties ($%) { |
5750 |
my ($self, %opt) = @_; |
5751 |
|
5752 |
{ |
5753 |
|
5754 |
|
5755 |
{ |
5756 |
|
5757 |
local $Error::Depth = $Error::Depth + 1; |
5758 |
|
5759 |
{ |
5760 |
|
5761 |
|
5762 |
if |
5763 |
(my $src = $self->{src}) { |
5764 |
my $forp = $self-> |
5765 |
forp_uri |
5766 |
; |
5767 |
my $db = $self-> |
5768 |
database |
5769 |
; |
5770 |
my $factory; |
5771 |
for my $el (@{$src-> |
5772 |
dis_child_elements |
5773 |
|
5774 |
(forp_arg => $forp, |
5775 |
database_arg => $db)}) { |
5776 |
my $xu = $el-> |
5777 |
expanded_uri |
5778 |
; |
5779 |
if ({ |
5780 |
|
5781 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AliasFor' |
5782 |
=> |
5783 |
1 |
5784 |
, |
5785 |
|
5786 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ContentType' |
5787 |
=> |
5788 |
1 |
5789 |
, |
5790 |
|
5791 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--dataType' |
5792 |
=> |
5793 |
1 |
5794 |
, |
5795 |
|
5796 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ForCheck' |
5797 |
=> |
5798 |
1 |
5799 |
, |
5800 |
|
5801 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Name' |
5802 |
=> |
5803 |
1 |
5804 |
, |
5805 |
|
5806 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Namespace' |
5807 |
=> |
5808 |
1 |
5809 |
, |
5810 |
|
5811 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--multipleProperties' |
5812 |
=> |
5813 |
1 |
5814 |
, |
5815 |
|
5816 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#resourceType' |
5817 |
=> |
5818 |
1 |
5819 |
, |
5820 |
|
5821 |
'http://www.w3.org/1999/02/22-rdf-syntax-ns#type' |
5822 |
=> |
5823 |
1 |
5824 |
, ## TODO: Remove this. |
5825 |
|
5826 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--QName' |
5827 |
=> |
5828 |
1 |
5829 |
, |
5830 |
|
5831 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Require' |
5832 |
=> |
5833 |
1 |
5834 |
, |
5835 |
|
5836 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--resourceFor' |
5837 |
=> |
5838 |
1 |
5839 |
, |
5840 |
}->{$xu}) { |
5841 |
# |
5842 |
} elsif ($el-> |
5843 |
is_property_element |
5844 |
|
5845 |
(database_arg => $db)) { |
5846 |
my $add_prop; |
5847 |
$add_prop = sub ($$$) { |
5848 |
my ($self, $el, $db) = @_; |
5849 |
my $prop = $db-> |
5850 |
get_resource |
5851 |
|
5852 |
($el-> |
5853 |
expanded_uri |
5854 |
); |
5855 |
my $prop_uri = $prop-> |
5856 |
uri |
5857 |
; |
5858 |
my $prop_mult = $prop-> |
5859 |
multiple_properties_uri |
5860 |
; |
5861 |
my $new_value; |
5862 |
my $base_type; |
5863 |
my $copy_tree = |
5864 |
0 |
5865 |
; |
5866 |
|
5867 |
my %mtopt = (default_media_type => $prop-> |
5868 |
default_lextype_uri |
5869 |
, |
5870 |
database_arg => $db); |
5871 |
my $new_value_type = $el-> |
5872 |
media_type_uri |
5873 |
(%mtopt); |
5874 |
|
5875 |
if ($el-> |
5876 |
media_type_match |
5877 |
|
5878 |
( |
5879 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#QName' |
5880 |
, $mtopt{default_media_type}, %mtopt)) { |
5881 |
|
5882 |
|
5883 |
{ |
5884 |
|
5885 |
|
5886 |
$new_value = |
5887 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value |
5888 |
|
5889 |
($new_value_type, undef, base_type => $base_type = 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#QName'); |
5890 |
|
5891 |
|
5892 |
{ |
5893 |
|
5894 |
local $Error::Depth = $Error::Depth + 1; |
5895 |
|
5896 |
{ |
5897 |
|
5898 |
|
5899 |
|
5900 |
$new_value-> |
5901 |
name |
5902 |
($prop_uri); |
5903 |
|
5904 |
|
5905 |
|
5906 |
} |
5907 |
|
5908 |
|
5909 |
;} |
5910 |
|
5911 |
; |
5912 |
|
5913 |
|
5914 |
} |
5915 |
|
5916 |
; |
5917 |
$new_value-> |
5918 |
local_name |
5919 |
|
5920 |
($el-> |
5921 |
qname_value_local_name |
5922 |
); |
5923 |
$new_value-> |
5924 |
prefix |
5925 |
|
5926 |
(my $prefix = $el-> |
5927 |
qname_value_prefix |
5928 |
); |
5929 |
if (not defined $prefix) { |
5930 |
if ($el-> |
5931 |
media_type_match |
5932 |
|
5933 |
( |
5934 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#LanguageTag' |
5935 |
, |
5936 |
$mtopt{default_media_type}, %mtopt)) { |
5937 |
$new_value-> |
5938 |
namespace_uri |
5939 |
|
5940 |
('urn:x-suika-fam-cx:lang:'); |
5941 |
} elsif ($el-> |
5942 |
media_type_match |
5943 |
|
5944 |
( |
5945 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#ScriptTag' |
5946 |
, |
5947 |
$mtopt{default_media_type}, %mtopt)) { |
5948 |
$new_value-> |
5949 |
namespace_uri |
5950 |
|
5951 |
('http://suika.fam.cx/~wakaba/archive/2005/5/script#'); |
5952 |
} else { |
5953 |
$new_value-> |
5954 |
namespace_uri |
5955 |
|
5956 |
($el-> |
5957 |
qname_value_namespace_uri |
5958 |
); |
5959 |
} |
5960 |
} else { |
5961 |
$new_value-> |
5962 |
namespace_uri |
5963 |
|
5964 |
($el-> |
5965 |
qname_value_namespace_uri |
5966 |
); |
5967 |
} |
5968 |
## TODO: Check whether defined |
5969 |
} elsif ($el-> |
5970 |
media_type_match |
5971 |
|
5972 |
( |
5973 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#TFPQNames' |
5974 |
, $mtopt{default_media_type}, %mtopt)) { |
5975 |
|
5976 |
|
5977 |
{ |
5978 |
|
5979 |
|
5980 |
$new_value = |
5981 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value |
5982 |
|
5983 |
( |
5984 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI' |
5985 |
, $el->tfqnames_value_uri |
5986 |
($self->source_node_id)); |
5987 |
|
5988 |
|
5989 |
{ |
5990 |
|
5991 |
local $Error::Depth = $Error::Depth + 1; |
5992 |
|
5993 |
{ |
5994 |
|
5995 |
|
5996 |
|
5997 |
$new_value-> |
5998 |
name |
5999 |
($prop_uri); |
6000 |
|
6001 |
|
6002 |
|
6003 |
} |
6004 |
|
6005 |
|
6006 |
;} |
6007 |
|
6008 |
; |
6009 |
|
6010 |
|
6011 |
} |
6012 |
|
6013 |
; |
6014 |
## TODO: Check whether defined |
6015 |
$new_value_type = |
6016 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI' |
6017 |
; |
6018 |
} elsif ($el-> |
6019 |
media_type_match |
6020 |
|
6021 |
( |
6022 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#Perl' |
6023 |
, $mtopt{default_media_type}, |
6024 |
%mtopt)) { |
6025 |
$el-> |
6026 |
preserve_node_path |
6027 |
; |
6028 |
|
6029 |
|
6030 |
{ |
6031 |
|
6032 |
|
6033 |
$new_value = |
6034 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value_ref |
6035 |
|
6036 |
($new_value_type, $el->value_ref, base_type => $base_type = 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#Perl'); |
6037 |
|
6038 |
|
6039 |
{ |
6040 |
|
6041 |
local $Error::Depth = $Error::Depth + 1; |
6042 |
|
6043 |
{ |
6044 |
|
6045 |
|
6046 |
|
6047 |
$new_value-> |
6048 |
name |
6049 |
($prop_uri); |
6050 |
|
6051 |
|
6052 |
|
6053 |
} |
6054 |
|
6055 |
|
6056 |
;} |
6057 |
|
6058 |
|
6059 |
} |
6060 |
|
6061 |
; |
6062 |
for my $p ( |
6063 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Type' |
6064 |
, |
6065 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--actualType' |
6066 |
) { |
6067 |
if (UNIVERSAL::isa ($self->{$p}, |
6068 |
'Message::Util::IF::DVURIValue' |
6069 |
)) { |
6070 |
my $v; |
6071 |
|
6072 |
|
6073 |
{ |
6074 |
|
6075 |
|
6076 |
$v = |
6077 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value |
6078 |
|
6079 |
( |
6080 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI' |
6081 |
, $self->{$p}->uri); |
6082 |
|
6083 |
|
6084 |
{ |
6085 |
|
6086 |
local $Error::Depth = $Error::Depth + 1; |
6087 |
|
6088 |
{ |
6089 |
|
6090 |
|
6091 |
|
6092 |
$v-> |
6093 |
name |
6094 |
($prop_uri); |
6095 |
|
6096 |
|
6097 |
|
6098 |
} |
6099 |
|
6100 |
|
6101 |
;} |
6102 |
|
6103 |
; |
6104 |
|
6105 |
|
6106 |
} |
6107 |
|
6108 |
; |
6109 |
$new_value-> |
6110 |
set_property |
6111 |
($p => $v); |
6112 |
} |
6113 |
} |
6114 |
$new_value-> |
6115 |
default_namespace_uri_ref |
6116 |
|
6117 |
($el-> |
6118 |
get_default_namespace_uri_ref |
6119 |
); |
6120 |
$new_value-> |
6121 |
namespace_binding_list |
6122 |
|
6123 |
($el-> |
6124 |
get_namespace_binding_list |
6125 |
($db)); |
6126 |
$new_value-> |
6127 |
source_node_path |
6128 |
|
6129 |
($el-> |
6130 |
flag |
6131 |
('nodePath')); |
6132 |
} elsif ($el-> |
6133 |
media_type_match |
6134 |
|
6135 |
( |
6136 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#disdoc' |
6137 |
, $mtopt{default_media_type}, |
6138 |
%mtopt) or |
6139 |
$el-> |
6140 |
media_type_match |
6141 |
|
6142 |
( |
6143 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#disdocInline' |
6144 |
, $mtopt{default_media_type}, |
6145 |
%mtopt) or |
6146 |
$el-> |
6147 |
media_type_match |
6148 |
|
6149 |
( |
6150 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#muf' |
6151 |
, $mtopt{default_media_type}, |
6152 |
%mtopt) or |
6153 |
$el-> |
6154 |
media_type_match |
6155 |
|
6156 |
( |
6157 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dpg' |
6158 |
, $mtopt{default_media_type}, |
6159 |
%mtopt) or |
6160 |
$el-> |
6161 |
media_type_match |
6162 |
|
6163 |
( |
6164 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#tdterr' |
6165 |
, |
6166 |
$mtopt{default_media_type}, |
6167 |
%mtopt)) { |
6168 |
$el-> |
6169 |
preserve_node_path |
6170 |
; |
6171 |
|
6172 |
|
6173 |
{ |
6174 |
|
6175 |
|
6176 |
$new_value = |
6177 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value_ref |
6178 |
|
6179 |
($new_value_type, $el->value_ref, base_type => $base_type = 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#disdoc'); |
6180 |
|
6181 |
|
6182 |
{ |
6183 |
|
6184 |
local $Error::Depth = $Error::Depth + 1; |
6185 |
|
6186 |
{ |
6187 |
|
6188 |
|
6189 |
|
6190 |
$new_value-> |
6191 |
name |
6192 |
($prop_uri); |
6193 |
|
6194 |
|
6195 |
|
6196 |
} |
6197 |
|
6198 |
|
6199 |
;} |
6200 |
|
6201 |
|
6202 |
} |
6203 |
|
6204 |
; |
6205 |
$new_value-> |
6206 |
default_namespace_uri_ref |
6207 |
|
6208 |
($el-> |
6209 |
get_default_namespace_uri_ref |
6210 |
); |
6211 |
$new_value-> |
6212 |
namespace_binding_list |
6213 |
|
6214 |
($el-> |
6215 |
get_namespace_binding_list |
6216 |
($db)); |
6217 |
$new_value-> |
6218 |
source_node_path |
6219 |
|
6220 |
($el-> |
6221 |
flag |
6222 |
('nodePath')); |
6223 |
} elsif ($el-> |
6224 |
media_type_match |
6225 |
|
6226 |
( |
6227 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#XCRef' |
6228 |
, |
6229 |
$mtopt{default_media_type}, %mtopt)) { |
6230 |
my $x = $db-> |
6231 |
xcref_to_resource |
6232 |
|
6233 |
($el-> |
6234 |
value |
6235 |
, |
6236 |
$el, node => $el); |
6237 |
|
6238 |
|
6239 |
{ |
6240 |
|
6241 |
|
6242 |
$new_value = |
6243 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value |
6244 |
|
6245 |
( |
6246 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI' |
6247 |
, ($x->[2] or $x->[1] or $x->[0]) |
6248 |
->uri); |
6249 |
|
6250 |
|
6251 |
{ |
6252 |
|
6253 |
local $Error::Depth = $Error::Depth + 1; |
6254 |
|
6255 |
{ |
6256 |
|
6257 |
|
6258 |
|
6259 |
$new_value-> |
6260 |
name |
6261 |
($prop_uri); |
6262 |
|
6263 |
|
6264 |
|
6265 |
} |
6266 |
|
6267 |
|
6268 |
;} |
6269 |
|
6270 |
; |
6271 |
|
6272 |
|
6273 |
} |
6274 |
|
6275 |
; |
6276 |
$new_value-> |
6277 |
get_resource |
6278 |
($db) |
6279 |
-> |
6280 |
is_referred |
6281 |
($el); |
6282 |
$new_value_type = |
6283 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI' |
6284 |
; |
6285 |
} elsif ($el-> |
6286 |
media_type_match |
6287 |
|
6288 |
( |
6289 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dcmodel' |
6290 |
, |
6291 |
$mtopt{default_media_type}, %mtopt)) { |
6292 |
unless (defined $factory) { |
6293 |
$factory = $opt{implementation}->create_document; |
6294 |
} |
6295 |
my $mt = $db-> |
6296 |
get_resource |
6297 |
|
6298 |
($el-> |
6299 |
media_type_uri |
6300 |
); |
6301 |
my $node = $mt-> |
6302 |
parse_string |
6303 |
|
6304 |
($el-> |
6305 |
value |
6306 |
, $el, $factory, |
6307 |
); |
6308 |
|
6309 |
|
6310 |
{ |
6311 |
|
6312 |
|
6313 |
{ |
6314 |
|
6315 |
local $Error::Depth = $Error::Depth + 1; |
6316 |
|
6317 |
{ |
6318 |
|
6319 |
|
6320 |
|
6321 |
$new_value = $Message::DOM::ImplementationRegistry |
6322 |
->get_dom_implementation |
6323 |
({ |
6324 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#Value' |
6325 |
=> '1.0', |
6326 |
|
6327 |
'http://suika.fam.cx/www/2006/feature/TreeStore' |
6328 |
=> '3.0'}) |
6329 |
-> |
6330 |
create_dvxml_value |
6331 |
|
6332 |
($node); |
6333 |
$new_value-> |
6334 |
name |
6335 |
($prop_uri); |
6336 |
|
6337 |
|
6338 |
|
6339 |
} |
6340 |
|
6341 |
|
6342 |
;} |
6343 |
|
6344 |
; |
6345 |
|
6346 |
|
6347 |
} |
6348 |
|
6349 |
; |
6350 |
$new_value-> |
6351 |
source_node_path |
6352 |
|
6353 |
($el-> |
6354 |
flag |
6355 |
('nodePath')); |
6356 |
} elsif ($el-> |
6357 |
media_type_match |
6358 |
|
6359 |
( |
6360 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#NSString' |
6361 |
, |
6362 |
$mtopt{default_media_type}, %mtopt)) { |
6363 |
$el-> |
6364 |
preserve_node_path |
6365 |
; |
6366 |
|
6367 |
|
6368 |
{ |
6369 |
|
6370 |
|
6371 |
$new_value = |
6372 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value_ref |
6373 |
|
6374 |
($new_value_type, $el->value_ref, base_type => $base_type = 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#NSString'); |
6375 |
|
6376 |
|
6377 |
{ |
6378 |
|
6379 |
local $Error::Depth = $Error::Depth + 1; |
6380 |
|
6381 |
{ |
6382 |
|
6383 |
|
6384 |
|
6385 |
$new_value-> |
6386 |
name |
6387 |
($prop_uri); |
6388 |
|
6389 |
|
6390 |
|
6391 |
} |
6392 |
|
6393 |
|
6394 |
;} |
6395 |
|
6396 |
|
6397 |
} |
6398 |
|
6399 |
; |
6400 |
$new_value-> |
6401 |
default_namespace_uri_ref |
6402 |
|
6403 |
($el-> |
6404 |
get_default_namespace_uri_ref |
6405 |
); |
6406 |
$new_value-> |
6407 |
namespace_binding_list |
6408 |
|
6409 |
($el-> |
6410 |
get_namespace_binding_list |
6411 |
($db)); |
6412 |
$new_value-> |
6413 |
source_node_path |
6414 |
|
6415 |
($el-> |
6416 |
flag |
6417 |
('nodePath')); |
6418 |
} elsif ($el-> |
6419 |
media_type_match |
6420 |
|
6421 |
( |
6422 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis' |
6423 |
, $mtopt{default_media_type}, |
6424 |
%mtopt)) { |
6425 |
$copy_tree = |
6426 |
1 |
6427 |
; |
6428 |
$el-> |
6429 |
preserve_node_path |
6430 |
; |
6431 |
my $elc = $el->clone; |
6432 |
|
6433 |
|
6434 |
{ |
6435 |
|
6436 |
|
6437 |
$new_value = |
6438 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value |
6439 |
|
6440 |
($new_value_type, $elc, base_type => $base_type = 'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis'); |
6441 |
|
6442 |
|
6443 |
{ |
6444 |
|
6445 |
local $Error::Depth = $Error::Depth + 1; |
6446 |
|
6447 |
{ |
6448 |
|
6449 |
|
6450 |
|
6451 |
$new_value-> |
6452 |
name |
6453 |
($prop_uri); |
6454 |
|
6455 |
|
6456 |
|
6457 |
} |
6458 |
|
6459 |
|
6460 |
;} |
6461 |
|
6462 |
; |
6463 |
|
6464 |
|
6465 |
} |
6466 |
|
6467 |
; |
6468 |
$elc-> |
6469 |
unlink_from_document |
6470 |
($db); |
6471 |
} elsif ($el-> |
6472 |
media_type_match |
6473 |
|
6474 |
( |
6475 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#Integer' |
6476 |
, |
6477 |
$mtopt{default_media_type}, %mtopt)) { |
6478 |
my $v = $el-> |
6479 |
value |
6480 |
; |
6481 |
if ($v =~ /^0x/) { |
6482 |
$v = hex $v; |
6483 |
} else { |
6484 |
$v += 0; |
6485 |
} |
6486 |
|
6487 |
|
6488 |
{ |
6489 |
|
6490 |
|
6491 |
$new_value = |
6492 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value |
6493 |
|
6494 |
($new_value_type, $v, base_type => $base_type = 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#Integer'); |
6495 |
|
6496 |
|
6497 |
{ |
6498 |
|
6499 |
local $Error::Depth = $Error::Depth + 1; |
6500 |
|
6501 |
{ |
6502 |
|
6503 |
|
6504 |
|
6505 |
$new_value-> |
6506 |
name |
6507 |
($prop_uri); |
6508 |
|
6509 |
|
6510 |
|
6511 |
} |
6512 |
|
6513 |
|
6514 |
;} |
6515 |
|
6516 |
; |
6517 |
|
6518 |
|
6519 |
} |
6520 |
|
6521 |
; |
6522 |
} elsif ($el-> |
6523 |
media_type_match |
6524 |
|
6525 |
( |
6526 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#UString' |
6527 |
, |
6528 |
$mtopt{default_media_type}, %mtopt)) { |
6529 |
my $v = $el-> |
6530 |
value |
6531 |
; |
6532 |
$v =~ s/\$\x0D?\x0A//gs; |
6533 |
$v =~ s/\$\z//; |
6534 |
warn 'String |'.$el-> |
6535 |
value |
6536 |
.'| contains '. |
6537 |
'illegal |$| character' if $v =~ /\$(?![uU])/; |
6538 |
## TODO: Use error-handler |
6539 |
$v =~ s{\$(u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})}{ |
6540 |
chr hex substr $1, 1 |
6541 |
}ge; |
6542 |
|
6543 |
|
6544 |
{ |
6545 |
|
6546 |
|
6547 |
$new_value = |
6548 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value |
6549 |
|
6550 |
('http://suika.fam.cx/~wakaba/archive/2004/dis/Core#String', $v, base_type => $base_type = 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#String'); |
6551 |
|
6552 |
|
6553 |
{ |
6554 |
|
6555 |
local $Error::Depth = $Error::Depth + 1; |
6556 |
|
6557 |
{ |
6558 |
|
6559 |
|
6560 |
|
6561 |
$new_value-> |
6562 |
name |
6563 |
($prop_uri); |
6564 |
|
6565 |
|
6566 |
|
6567 |
} |
6568 |
|
6569 |
|
6570 |
;} |
6571 |
|
6572 |
; |
6573 |
|
6574 |
|
6575 |
} |
6576 |
|
6577 |
; |
6578 |
## NOTE: Since |type| is set to |DISCore:String|, |
6579 |
## what subtype of |DISCore:UString| it was originally |
6580 |
## is not preserved. |
6581 |
} else { |
6582 |
|
6583 |
|
6584 |
{ |
6585 |
|
6586 |
|
6587 |
$new_value = |
6588 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value |
6589 |
|
6590 |
($new_value_type, $el->value, base_type => $base_type = 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#String'); |
6591 |
|
6592 |
|
6593 |
{ |
6594 |
|
6595 |
local $Error::Depth = $Error::Depth + 1; |
6596 |
|
6597 |
{ |
6598 |
|
6599 |
|
6600 |
|
6601 |
$new_value-> |
6602 |
name |
6603 |
($prop_uri); |
6604 |
|
6605 |
|
6606 |
|
6607 |
} |
6608 |
|
6609 |
|
6610 |
;} |
6611 |
|
6612 |
; |
6613 |
|
6614 |
|
6615 |
} |
6616 |
|
6617 |
; |
6618 |
} |
6619 |
|
6620 |
unless ($copy_tree) { |
6621 |
for my $ce (@{$el-> |
6622 |
dis_child_elements |
6623 |
|
6624 |
(forp_arg => $forp, |
6625 |
database_arg => $db)}) { |
6626 |
my $xu = $ce-> |
6627 |
expanded_uri |
6628 |
; |
6629 |
if ({ |
6630 |
|
6631 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AliasFor' |
6632 |
=> |
6633 |
1 |
6634 |
, |
6635 |
|
6636 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ForCheck' |
6637 |
=> |
6638 |
1 |
6639 |
, |
6640 |
|
6641 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ContentType' |
6642 |
=> |
6643 |
1 |
6644 |
, |
6645 |
|
6646 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--resourceFor' |
6647 |
=> |
6648 |
1 |
6649 |
, |
6650 |
}->{$xu}) { |
6651 |
# |
6652 |
} elsif ($ce-> |
6653 |
is_property_element |
6654 |
|
6655 |
(database_arg => $db)) { |
6656 |
my $pr; |
6657 |
|
6658 |
|
6659 |
{ |
6660 |
|
6661 |
local $Error::Depth = $Error::Depth + 1; |
6662 |
|
6663 |
{ |
6664 |
|
6665 |
|
6666 |
|
6667 |
$pr = $add_prop->($self, $ce, $db); |
6668 |
|
6669 |
|
6670 |
|
6671 |
} |
6672 |
|
6673 |
|
6674 |
;} |
6675 |
|
6676 |
; |
6677 |
if ($pr->{prop_mult} eq |
6678 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#OrderedList' |
6679 |
) { |
6680 |
my $cpv = $new_value-> |
6681 |
get_property |
6682 |
($xu); |
6683 |
if (not $cpv) { |
6684 |
|
6685 |
|
6686 |
{ |
6687 |
|
6688 |
|
6689 |
$cpv = |
6690 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_ordered_list |
6691 |
|
6692 |
($mtopt{default_media_type}, base_type => 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#String'); |
6693 |
|
6694 |
|
6695 |
} |
6696 |
|
6697 |
; |
6698 |
$new_value-> |
6699 |
set_property |
6700 |
($xu => $cpv); |
6701 |
} |
6702 |
$cpv-> |
6703 |
add_item |
6704 |
($pr->{new_value}); |
6705 |
} elsif ($pr->{prop_mult} eq |
6706 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#UnorderedList' |
6707 |
) { |
6708 |
my $cpv = $new_value-> |
6709 |
get_property |
6710 |
($xu); |
6711 |
if (not $cpv) { |
6712 |
|
6713 |
|
6714 |
{ |
6715 |
|
6716 |
|
6717 |
$cpv = |
6718 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_unordered_list |
6719 |
|
6720 |
($mtopt{default_media_type}, base_type => 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#String'); |
6721 |
|
6722 |
|
6723 |
} |
6724 |
|
6725 |
; |
6726 |
$new_value-> |
6727 |
set_property |
6728 |
($xu => $cpv); |
6729 |
} |
6730 |
$cpv-> |
6731 |
add_item |
6732 |
($pr->{new_value}); |
6733 |
} else { |
6734 |
$new_value-> |
6735 |
set_property |
6736 |
|
6737 |
($xu => $pr->{new_value}); |
6738 |
} |
6739 |
} else { |
6740 |
|
6741 |
|
6742 |
{ |
6743 |
|
6744 |
local $Error::Depth = $Error::Depth - 1; |
6745 |
|
6746 |
{ |
6747 |
|
6748 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $ce, '-type' => 'NOT_SUPPORTED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'read_properties', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#UNSUPPORTED_ELEMENT_TYPE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#elementType' => $xu; |
6749 |
|
6750 |
|
6751 |
} |
6752 |
|
6753 |
|
6754 |
;} |
6755 |
|
6756 |
; |
6757 |
} |
6758 |
}} # copy_tree |
6759 |
|
6760 |
{new_value => $new_value, base_type => $base_type, |
6761 |
prop_uri => $prop_uri, prop_mult => $prop_mult, |
6762 |
new_value_type => $new_value_type}; |
6763 |
}; |
6764 |
|
6765 |
my $pr; |
6766 |
|
6767 |
|
6768 |
{ |
6769 |
|
6770 |
local $Error::Depth = $Error::Depth + 1; |
6771 |
|
6772 |
{ |
6773 |
|
6774 |
|
6775 |
|
6776 |
$pr = $add_prop->($self, $el, $db); |
6777 |
|
6778 |
|
6779 |
|
6780 |
} |
6781 |
|
6782 |
|
6783 |
;} |
6784 |
|
6785 |
; |
6786 |
if ($pr->{prop_mult} eq |
6787 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#OrderedList' |
6788 |
) { |
6789 |
if (not $self->{$pr->{prop_uri}}) { |
6790 |
|
6791 |
|
6792 |
{ |
6793 |
|
6794 |
|
6795 |
$self->{$pr->{prop_uri}} = |
6796 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_ordered_list |
6797 |
|
6798 |
($pr->{new_value_type}, base_type => $pr->{base_type} || 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#String'); |
6799 |
|
6800 |
|
6801 |
} |
6802 |
|
6803 |
; |
6804 |
} |
6805 |
$self->{$pr->{prop_uri}}-> |
6806 |
add_item |
6807 |
|
6808 |
($pr->{new_value}); |
6809 |
} elsif ($pr->{prop_mult} eq |
6810 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#UnorderedList' |
6811 |
) { |
6812 |
if (not $self->{$pr->{prop_uri}}) { |
6813 |
|
6814 |
|
6815 |
{ |
6816 |
|
6817 |
|
6818 |
$self->{$pr->{prop_uri}} = |
6819 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_unordered_list |
6820 |
|
6821 |
($pr->{new_value_type}, base_type => $pr->{base_type} || 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#String'); |
6822 |
|
6823 |
|
6824 |
} |
6825 |
|
6826 |
; |
6827 |
} |
6828 |
$self->{$pr->{prop_uri}}-> |
6829 |
add_item |
6830 |
|
6831 |
($pr->{new_value}); |
6832 |
} else { |
6833 |
$self->{$pr->{prop_uri}} = $pr->{new_value}; |
6834 |
} |
6835 |
|
6836 |
if ($el-> |
6837 |
element_type_match |
6838 |
|
6839 |
( |
6840 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Perl#propHashKey' |
6841 |
, database_arg => $db)) { |
6842 |
$db-> |
6843 |
pl_add_hash_key |
6844 |
|
6845 |
($xu => $pr->{new_value}-> |
6846 |
string_value |
6847 |
|
6848 |
=> $self); |
6849 |
} |
6850 |
} elsif ($el-> |
6851 |
is_resource_element |
6852 |
) { |
6853 |
## TODO: Should rdf:type be validated? |
6854 |
} else { |
6855 |
|
6856 |
|
6857 |
{ |
6858 |
|
6859 |
local $Error::Depth = $Error::Depth - 1; |
6860 |
|
6861 |
{ |
6862 |
|
6863 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $el, '-type' => 'NOT_SUPPORTED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'read_properties', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#UNSUPPORTED_ELEMENT_TYPE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#elementType' => $xu; |
6864 |
|
6865 |
|
6866 |
} |
6867 |
|
6868 |
|
6869 |
;} |
6870 |
|
6871 |
; |
6872 |
} |
6873 |
} |
6874 |
CORE::delete $self->{src}; |
6875 |
($opt{on_resource_read} or sub () {})->($self, $self); |
6876 |
} |
6877 |
|
6878 |
|
6879 |
|
6880 |
} |
6881 |
|
6882 |
|
6883 |
;} |
6884 |
|
6885 |
; |
6886 |
|
6887 |
|
6888 |
} |
6889 |
} |
6890 |
sub is_type_uri ($$) { |
6891 |
my ($self, $typeURI) = @_; |
6892 |
my $r = 0; |
6893 |
|
6894 |
{ |
6895 |
|
6896 |
|
6897 |
{ |
6898 |
|
6899 |
local $Error::Depth = $Error::Depth + 1; |
6900 |
|
6901 |
{ |
6902 |
|
6903 |
|
6904 |
|
6905 |
$r = $self-> |
6906 |
type_resource |
6907 |
|
6908 |
-> |
6909 |
is_subset_of_uri |
6910 |
($typeURI); |
6911 |
|
6912 |
|
6913 |
|
6914 |
} |
6915 |
|
6916 |
|
6917 |
;} |
6918 |
|
6919 |
; |
6920 |
|
6921 |
|
6922 |
} |
6923 |
$r} |
6924 |
sub revision ($;$) { |
6925 |
if (@_ == 1) {my ($self) = @_; |
6926 |
my $r = 0; |
6927 |
|
6928 |
{ |
6929 |
|
6930 |
|
6931 |
$r = $self->{ |
6932 |
'r' |
6933 |
}; |
6934 |
|
6935 |
|
6936 |
} |
6937 |
$r; |
6938 |
} else {my ($self) = @_; |
6939 |
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::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'revision'; |
6940 |
} |
6941 |
} |
6942 |
sub get_type_uri_list ($) { |
6943 |
my ($self) = @_; |
6944 |
my $r = []; |
6945 |
|
6946 |
{ |
6947 |
|
6948 |
|
6949 |
{ |
6950 |
|
6951 |
local $Error::Depth = $Error::Depth + 1; |
6952 |
|
6953 |
{ |
6954 |
|
6955 |
|
6956 |
|
6957 |
$r = $self-> |
6958 |
type_resource |
6959 |
|
6960 |
-> |
6961 |
get_super_resource_uri_list |
6962 |
; |
6963 |
|
6964 |
|
6965 |
|
6966 |
} |
6967 |
|
6968 |
|
6969 |
;} |
6970 |
|
6971 |
; |
6972 |
|
6973 |
|
6974 |
} |
6975 |
$r} |
6976 |
sub type_resource ($;$) { |
6977 |
if (@_ == 1) {my ($self) = @_; |
6978 |
my $r; |
6979 |
|
6980 |
{ |
6981 |
|
6982 |
|
6983 |
{ |
6984 |
|
6985 |
local $Error::Depth = $Error::Depth + 1; |
6986 |
|
6987 |
{ |
6988 |
|
6989 |
|
6990 |
|
6991 |
$r = $self-> |
6992 |
database |
6993 |
|
6994 |
-> |
6995 |
get_resource |
6996 |
($self->{ |
6997 |
'tu' |
6998 |
}); |
6999 |
|
7000 |
|
7001 |
|
7002 |
} |
7003 |
|
7004 |
|
7005 |
;} |
7006 |
|
7007 |
; |
7008 |
|
7009 |
|
7010 |
} |
7011 |
$r; |
7012 |
} else {my ($self) = @_; |
7013 |
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::Util::DIS::ManakaiDISAnyResource', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'type_resource'; |
7014 |
} |
7015 |
} |
7016 |
sub add_type_uri ($$%) { |
7017 |
my ($self, $uri, %opt) = @_; |
7018 |
|
7019 |
{ |
7020 |
|
7021 |
|
7022 |
{ |
7023 |
|
7024 |
local $Error::Depth = $Error::Depth + 1; |
7025 |
|
7026 |
{ |
7027 |
|
7028 |
|
7029 |
my |
7030 |
$current_type = $self-> |
7031 |
type_resource |
7032 |
; |
7033 |
unless ($current_type-> |
7034 |
is_subset_of_uri |
7035 |
|
7036 |
($uri, srinfo => $opt{srinfo})) { |
7037 |
my $db = $self-> |
7038 |
database |
7039 |
; |
7040 |
my $res = $db-> |
7041 |
get_resource |
7042 |
($uri); |
7043 |
my $current_uri = $current_type-> |
7044 |
uri |
7045 |
; |
7046 |
if ($res-> |
7047 |
is_subset_of_uri |
7048 |
|
7049 |
($current_uri, srinfo => $opt{srinfo})) { |
7050 |
$self->{ |
7051 |
'tu' |
7052 |
} = $uri; |
7053 |
} else { |
7054 |
my $new_uri; |
7055 |
|
7056 |
|
7057 |
{ |
7058 |
|
7059 |
my |
7060 |
$__uri1 = $current_uri; |
7061 |
my $__uri2 = $uri; |
7062 |
for my $__uri ($__uri1, $__uri2) { |
7063 |
$__uri =~ s{([^0-9A-Za-z!\$'()*,:;=?\@_./~-])} |
7064 |
{sprintf '%%%02X', ord $1}ge; |
7065 |
} |
7066 |
$new_uri = qq<tag:suika.fam.cx,2006-02:$__uri1+$__uri2>; |
7067 |
|
7068 |
|
7069 |
} |
7070 |
|
7071 |
; |
7072 |
my $new_res = $db-> |
7073 |
get_resource |
7074 |
($new_uri); |
7075 |
unless ($new_res-> |
7076 |
is_defined |
7077 |
) { |
7078 |
$new_res-> |
7079 |
is_anonymous |
7080 |
( |
7081 |
1 |
7082 |
); |
7083 |
$new_res-> |
7084 |
is_defined |
7085 |
( |
7086 |
1 |
7087 |
); |
7088 |
$new_res-> |
7089 |
add_super_resource |
7090 |
|
7091 |
($current_type, srinfo => $opt{srinfo}); |
7092 |
$new_res-> |
7093 |
add_super_resource |
7094 |
|
7095 |
($res, srinfo => $opt{srinfo}); |
7096 |
} |
7097 |
unless ($new_res-> |
7098 |
owner_module_uri_ref |
7099 |
) { |
7100 |
$new_res-> |
7101 |
owner_module_uri_ref |
7102 |
|
7103 |
($res-> |
7104 |
owner_module_uri_ref |
7105 |
); |
7106 |
} |
7107 |
$self->{ |
7108 |
'tu' |
7109 |
} = $new_uri; |
7110 |
} |
7111 |
} |
7112 |
|
7113 |
|
7114 |
|
7115 |
} |
7116 |
|
7117 |
|
7118 |
;} |
7119 |
|
7120 |
; |
7121 |
|
7122 |
|
7123 |
} |
7124 |
} |
7125 |
sub ___report_error ($$) { |
7126 |
my ($self, $err) = @_; |
7127 |
my $r; |
7128 |
|
7129 |
{ |
7130 |
|
7131 |
if |
7132 |
($err->isa ( |
7133 |
'Message::DOM::IF::DOMError' |
7134 |
)) { |
7135 |
|
7136 |
|
7137 |
{ |
7138 |
|
7139 |
local $Error::Depth = $Error::Depth + 1; |
7140 |
|
7141 |
{ |
7142 |
|
7143 |
|
7144 |
my |
7145 |
$cfg = $self-> |
7146 |
database |
7147 |
|
7148 |
-> |
7149 |
dom_config |
7150 |
; |
7151 |
my $h = $cfg-> |
7152 |
get_parameter |
7153 |
('error-handler'); |
7154 |
$r = $h-> |
7155 |
handle_error |
7156 |
($err); |
7157 |
|
7158 |
|
7159 |
|
7160 |
} |
7161 |
|
7162 |
|
7163 |
;} |
7164 |
|
7165 |
; |
7166 |
} else { |
7167 |
$err-> |
7168 |
throw |
7169 |
; |
7170 |
} |
7171 |
|
7172 |
|
7173 |
} |
7174 |
$r} |
7175 |
sub get_error_interface_resource ($) { |
7176 |
my ($self) = @_; |
7177 |
my $r; |
7178 |
|
7179 |
{ |
7180 |
|
7181 |
my |
7182 |
$method; |
7183 |
my $tr = $self-> |
7184 |
type_resource |
7185 |
; |
7186 |
|
7187 |
|
7188 |
{ |
7189 |
|
7190 |
my |
7191 |
$__type_uri = $tr-> |
7192 |
uri |
7193 |
; |
7194 |
$method = $Message::Util::DIS::Method{$__type_uri}->{'get_error_interface_resource'}; |
7195 |
unless ($method) { |
7196 |
my %__methods; |
7197 |
for (@{$tr-> |
7198 |
get_super_resource_uri_list |
7199 |
}) { |
7200 |
$__methods{$_} = $Message::Util::DIS::Method{$_}->{'get_error_interface_resource'} |
7201 |
if $Message::Util::DIS::Method{$_}->{'get_error_interface_resource'}; |
7202 |
} |
7203 |
my $__db = $tr-> |
7204 |
database |
7205 |
; |
7206 |
T1: for my $__t1_uri (keys %__methods) { |
7207 |
next T1 unless $__methods{$__t1_uri}; |
7208 |
my $__t1 = $__db-> |
7209 |
get_resource |
7210 |
($__t1_uri); |
7211 |
T2: for my $__t2_uri (keys %__methods) { |
7212 |
next T2 if $__t1_uri eq $__t2_uri; |
7213 |
if ($__t1-> |
7214 |
is_subset_of_uri |
7215 |
($__t2_uri)) { |
7216 |
delete $__methods{$__t2_uri}; |
7217 |
next T2; |
7218 |
} |
7219 |
if ($Message::Util::DIS::Method{$__t1_uri}->{'get_error_interface_resource'} |
7220 |
eq $Message::Util::DIS::Method{$__t2_uri}->{'get_error_interface_resource'}) { |
7221 |
delete $__methods{$__t2_uri}; |
7222 |
next T2; |
7223 |
} |
7224 |
} |
7225 |
} |
7226 |
if (keys %__methods > 1) { |
7227 |
|
7228 |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#more-than-one-methods-for-a-type', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#method-name' => 'get_error_interface_resource', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $__type_uri, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#getMethodForType', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#method-resource-types' => [keys %__methods]; |
7229 |
|
7230 |
; |
7231 |
} |
7232 |
$Message::Util::DIS::Method{$__type_uri}->{'get_error_interface_resource'} = |
7233 |
$method = $__methods{[keys %__methods]->[0]} if %__methods; |
7234 |
} |
7235 |
|
7236 |
|
7237 |
} |
7238 |
|
7239 |
; |
7240 |
if ($method) { |
7241 |
|
7242 |
|
7243 |
{ |
7244 |
|
7245 |
local $Error::Depth = $Error::Depth + 1; |
7246 |
|
7247 |
{ |
7248 |
|
7249 |
|
7250 |
|
7251 |
$r = $method->(@_); |
7252 |
|
7253 |
|
7254 |
|
7255 |
} |
7256 |
|
7257 |
|
7258 |
;} |
7259 |
|
7260 |
; |
7261 |
} else { |
7262 |
$r = |
7263 |
undef |
7264 |
; |
7265 |
} |
7266 |
|
7267 |
|
7268 |
} |
7269 |
$r} |
7270 |
sub get_error_code_resource ($) { |
7271 |
my ($self) = @_; |
7272 |
my $r; |
7273 |
|
7274 |
{ |
7275 |
|
7276 |
my |
7277 |
$method; |
7278 |
my $tr = $self-> |
7279 |
type_resource |
7280 |
; |
7281 |
|
7282 |
|
7283 |
{ |
7284 |
|
7285 |
my |
7286 |
$__type_uri = $tr-> |
7287 |
uri |
7288 |
; |
7289 |
$method = $Message::Util::DIS::Method{$__type_uri}->{'get_error_code_resource'}; |
7290 |
unless ($method) { |
7291 |
my %__methods; |
7292 |
for (@{$tr-> |
7293 |
get_super_resource_uri_list |
7294 |
}) { |
7295 |
$__methods{$_} = $Message::Util::DIS::Method{$_}->{'get_error_code_resource'} |
7296 |
if $Message::Util::DIS::Method{$_}->{'get_error_code_resource'}; |
7297 |
} |
7298 |
my $__db = $tr-> |
7299 |
database |
7300 |
; |
7301 |
T1: for my $__t1_uri (keys %__methods) { |
7302 |
next T1 unless $__methods{$__t1_uri}; |
7303 |
my $__t1 = $__db-> |
7304 |
get_resource |
7305 |
($__t1_uri); |
7306 |
T2: for my $__t2_uri (keys %__methods) { |
7307 |
next T2 if $__t1_uri eq $__t2_uri; |
7308 |
if ($__t1-> |
7309 |
is_subset_of_uri |
7310 |
($__t2_uri)) { |
7311 |
delete $__methods{$__t2_uri}; |
7312 |
next T2; |
7313 |
} |
7314 |
if ($Message::Util::DIS::Method{$__t1_uri}->{'get_error_code_resource'} |
7315 |
eq $Message::Util::DIS::Method{$__t2_uri}->{'get_error_code_resource'}) { |
7316 |
delete $__methods{$__t2_uri}; |
7317 |
next T2; |
7318 |
} |
7319 |
} |
7320 |
} |
7321 |
if (keys %__methods > 1) { |
7322 |
|
7323 |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#more-than-one-methods-for-a-type', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#method-name' => 'get_error_code_resource', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $__type_uri, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#getMethodForType', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#method-resource-types' => [keys %__methods]; |
7324 |
|
7325 |
; |
7326 |
} |
7327 |
$Message::Util::DIS::Method{$__type_uri}->{'get_error_code_resource'} = |
7328 |
$method = $__methods{[keys %__methods]->[0]} if %__methods; |
7329 |
} |
7330 |
|
7331 |
|
7332 |
} |
7333 |
|
7334 |
; |
7335 |
if ($method) { |
7336 |
|
7337 |
|
7338 |
{ |
7339 |
|
7340 |
local $Error::Depth = $Error::Depth + 1; |
7341 |
|
7342 |
{ |
7343 |
|
7344 |
|
7345 |
|
7346 |
$r = $method->(@_); |
7347 |
|
7348 |
|
7349 |
|
7350 |
} |
7351 |
|
7352 |
|
7353 |
;} |
7354 |
|
7355 |
; |
7356 |
} else { |
7357 |
$r = |
7358 |
undef |
7359 |
; |
7360 |
} |
7361 |
|
7362 |
|
7363 |
} |
7364 |
$r} |
7365 |
sub get_dom_configuration_parameter_name ($) { |
7366 |
my ($self) = @_; |
7367 |
my $r = ''; |
7368 |
|
7369 |
{ |
7370 |
|
7371 |
my |
7372 |
$method; |
7373 |
my $tr = $self-> |
7374 |
type_resource |
7375 |
; |
7376 |
|
7377 |
|
7378 |
{ |
7379 |
|
7380 |
my |
7381 |
$__type_uri = $tr-> |
7382 |
uri |
7383 |
; |
7384 |
$method = $Message::Util::DIS::Method{$__type_uri}->{'get_dom_configuration_parameter_name'}; |
7385 |
unless ($method) { |
7386 |
my %__methods; |
7387 |
for (@{$tr-> |
7388 |
get_super_resource_uri_list |
7389 |
}) { |
7390 |
$__methods{$_} = $Message::Util::DIS::Method{$_}->{'get_dom_configuration_parameter_name'} |
7391 |
if $Message::Util::DIS::Method{$_}->{'get_dom_configuration_parameter_name'}; |
7392 |
} |
7393 |
my $__db = $tr-> |
7394 |
database |
7395 |
; |
7396 |
T1: for my $__t1_uri (keys %__methods) { |
7397 |
next T1 unless $__methods{$__t1_uri}; |
7398 |
my $__t1 = $__db-> |
7399 |
get_resource |
7400 |
($__t1_uri); |
7401 |
T2: for my $__t2_uri (keys %__methods) { |
7402 |
next T2 if $__t1_uri eq $__t2_uri; |
7403 |
if ($__t1-> |
7404 |
is_subset_of_uri |
7405 |
($__t2_uri)) { |
7406 |
delete $__methods{$__t2_uri}; |
7407 |
next T2; |
7408 |
} |
7409 |
if ($Message::Util::DIS::Method{$__t1_uri}->{'get_dom_configuration_parameter_name'} |
7410 |
eq $Message::Util::DIS::Method{$__t2_uri}->{'get_dom_configuration_parameter_name'}) { |
7411 |
delete $__methods{$__t2_uri}; |
7412 |
next T2; |
7413 |
} |
7414 |
} |
7415 |
} |
7416 |
if (keys %__methods > 1) { |
7417 |
|
7418 |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#more-than-one-methods-for-a-type', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#method-name' => 'get_dom_configuration_parameter_name', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $__type_uri, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#getMethodForType', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#method-resource-types' => [keys %__methods]; |
7419 |
|
7420 |
; |
7421 |
} |
7422 |
$Message::Util::DIS::Method{$__type_uri}->{'get_dom_configuration_parameter_name'} = |
7423 |
$method = $__methods{[keys %__methods]->[0]} if %__methods; |
7424 |
} |
7425 |
|
7426 |
|
7427 |
} |
7428 |
|
7429 |
; |
7430 |
if ($method) { |
7431 |
|
7432 |
|
7433 |
{ |
7434 |
|
7435 |
local $Error::Depth = $Error::Depth + 1; |
7436 |
|
7437 |
{ |
7438 |
|
7439 |
|
7440 |
|
7441 |
$r = $method->(@_); |
7442 |
|
7443 |
|
7444 |
|
7445 |
} |
7446 |
|
7447 |
|
7448 |
;} |
7449 |
|
7450 |
; |
7451 |
} else { |
7452 |
$r = |
7453 |
undef |
7454 |
; |
7455 |
} |
7456 |
|
7457 |
|
7458 |
} |
7459 |
$r} |
7460 |
sub get_node_from_storage ($$$$) { |
7461 |
my ($self, $key, $hash, $factory) = @_; |
7462 |
my $r; |
7463 |
|
7464 |
{ |
7465 |
|
7466 |
require |
7467 |
Message::DOM::TreeStore; |
7468 |
my $mod = $self-> |
7469 |
owner_module |
7470 |
; |
7471 |
$mod-> |
7472 |
pl_load_node_storage |
7473 |
unless |
7474 |
defined $mod->{ |
7475 |
'nst' |
7476 |
}; |
7477 |
my $st = $mod->{ |
7478 |
'nst' |
7479 |
}; |
7480 |
if (defined $st->{$key} and $st->{$key}->[1] eq $hash) { |
7481 |
$r = $factory->implementation |
7482 |
->get_feature ( |
7483 |
'http://suika.fam.cx/www/2006/feature/TreeStore' |
7484 |
) |
7485 |
->create_node_from_storable_object |
7486 |
($st->{$key}->[0], $factory); |
7487 |
} |
7488 |
|
7489 |
|
7490 |
} |
7491 |
$r} |
7492 |
sub set_node_to_storage ($$$;$) { |
7493 |
my ($self, $key, $hash, $node) = @_; |
7494 |
|
7495 |
{ |
7496 |
|
7497 |
require |
7498 |
Message::DOM::TreeStore; |
7499 |
my $mod = $self-> |
7500 |
owner_module |
7501 |
; |
7502 |
$mod-> |
7503 |
pl_load_node_storage |
7504 |
unless |
7505 |
defined $mod->{ |
7506 |
'nst' |
7507 |
}; |
7508 |
my $st = $mod->{ |
7509 |
'nst' |
7510 |
}; |
7511 |
if (defined $node) { |
7512 |
$st->{$key}->[0] = [$node->owner_document |
7513 |
->implementation |
7514 |
->get_feature ( |
7515 |
'http://suika.fam.cx/www/2006/feature/TreeStore' |
7516 |
) |
7517 |
->create_storable_object_from_node |
7518 |
($node), $hash]; |
7519 |
} else { |
7520 |
delete $st->{$key}; |
7521 |
} |
7522 |
$mod->{ |
7523 |
'nstmod' |
7524 |
} = |
7525 |
1 |
7526 |
; |
7527 |
|
7528 |
|
7529 |
} |
7530 |
} |
7531 |
sub parse_string ($$$$) { |
7532 |
my ($self, $s, $ns, $factory) = @_; |
7533 |
my $r; |
7534 |
|
7535 |
{ |
7536 |
|
7537 |
my |
7538 |
$method; |
7539 |
|
7540 |
|
7541 |
{ |
7542 |
|
7543 |
my |
7544 |
$__type_uri = $self-> |
7545 |
uri |
7546 |
; |
7547 |
$method = $Message::Util::DIS::Method{$__type_uri}->{'parse_string'}; |
7548 |
unless ($method) { |
7549 |
my %__methods; |
7550 |
for (@{$self-> |
7551 |
get_super_resource_uri_list |
7552 |
}) { |
7553 |
$__methods{$_} = $Message::Util::DIS::Method{$_}->{'parse_string'} |
7554 |
if $Message::Util::DIS::Method{$_}->{'parse_string'}; |
7555 |
} |
7556 |
my $__db = $self-> |
7557 |
database |
7558 |
; |
7559 |
T1: for my $__t1_uri (keys %__methods) { |
7560 |
next T1 unless $__methods{$__t1_uri}; |
7561 |
my $__t1 = $__db-> |
7562 |
get_resource |
7563 |
($__t1_uri); |
7564 |
T2: for my $__t2_uri (keys %__methods) { |
7565 |
next T2 if $__t1_uri eq $__t2_uri; |
7566 |
if ($__t1-> |
7567 |
is_subset_of_uri |
7568 |
($__t2_uri)) { |
7569 |
delete $__methods{$__t2_uri}; |
7570 |
next T2; |
7571 |
} |
7572 |
if ($Message::Util::DIS::Method{$__t1_uri}->{'parse_string'} |
7573 |
eq $Message::Util::DIS::Method{$__t2_uri}->{'parse_string'}) { |
7574 |
delete $__methods{$__t2_uri}; |
7575 |
next T2; |
7576 |
} |
7577 |
} |
7578 |
} |
7579 |
if (keys %__methods > 1) { |
7580 |
|
7581 |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#more-than-one-methods-for-a-type', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#method-name' => 'parse_string', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $__type_uri, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#getMethodForType', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#method-resource-types' => [keys %__methods]; |
7582 |
|
7583 |
; |
7584 |
} |
7585 |
$Message::Util::DIS::Method{$__type_uri}->{'parse_string'} = |
7586 |
$method = $__methods{[keys %__methods]->[0]} if %__methods; |
7587 |
} |
7588 |
|
7589 |
|
7590 |
} |
7591 |
|
7592 |
; |
7593 |
if ($method) { |
7594 |
|
7595 |
|
7596 |
{ |
7597 |
|
7598 |
local $Error::Depth = $Error::Depth + 1; |
7599 |
|
7600 |
{ |
7601 |
|
7602 |
|
7603 |
|
7604 |
$r = $method->(@_); |
7605 |
|
7606 |
|
7607 |
|
7608 |
} |
7609 |
|
7610 |
|
7611 |
;} |
7612 |
|
7613 |
; |
7614 |
} else { |
7615 |
$r = |
7616 |
undef |
7617 |
; |
7618 |
} |
7619 |
|
7620 |
|
7621 |
} |
7622 |
$r} |
7623 |
use overload |
7624 |
bool => sub () {1}, |
7625 |
'eq' => 'is_same_resource', |
7626 |
fallback => 1; |
7627 |
$Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISAnyResource>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core', |
7628 |
{'', |
7629 |
'1', |
7630 |
'1.0', |
7631 |
'1'}}; |
7632 |
$Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISAnyResource>} = 1; |
7633 |
package Message::Util::IF::DISModule; |
7634 |
our $VERSION = 20061231.0921; |
7635 |
package Message::Util::DIS::ManakaiDISModuleDefinition; |
7636 |
our $VERSION = 20061231.0921; |
7637 |
push our @ISA, 'Message::Util::DIS::ManakaiDISPropertyAccessor', |
7638 |
'Message::Util::DIS::Perl::ManakaiDISPerlModuleDefinition', |
7639 |
'Message::Util::DIS::Perl::ManakaiDISModulePerl', |
7640 |
'Message::Util::DIS::Perl::ManakaiDISAnyResourcePerl', |
7641 |
'Message::Util::DIS::ManakaiDISAnyResource', |
7642 |
'Message::Util::IF::DISModule'; |
7643 |
sub uris ($;$) { |
7644 |
if (@_ == 1) {my ($self) = @_; |
7645 |
my $r; |
7646 |
|
7647 |
{ |
7648 |
|
7649 |
|
7650 |
$r = [$self->{uri}]; |
7651 |
|
7652 |
|
7653 |
} |
7654 |
$r; |
7655 |
} else {my ($self) = @_; |
7656 |
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::Util::DIS::ManakaiDISModuleDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'uris'; |
7657 |
} |
7658 |
} |
7659 |
sub owner_module ($;$) { |
7660 |
if (@_ == 1) {my ($self) = @_; |
7661 |
my $r; |
7662 |
|
7663 |
{ |
7664 |
|
7665 |
|
7666 |
$r = $self; |
7667 |
|
7668 |
|
7669 |
} |
7670 |
$r; |
7671 |
} else {my ($self) = @_; |
7672 |
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::Util::DIS::ManakaiDISModuleDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'owner_module'; |
7673 |
} |
7674 |
} |
7675 |
sub add_resource_list ($$) { |
7676 |
my ($self, $disResource) = @_; |
7677 |
|
7678 |
{ |
7679 |
|
7680 |
|
7681 |
{ |
7682 |
|
7683 |
local $Error::Depth = $Error::Depth + 1; |
7684 |
|
7685 |
{ |
7686 |
|
7687 |
|
7688 |
push |
7689 |
@{$self->{ |
7690 |
'mres' |
7691 |
}||=[]}, |
7692 |
map {\$_} @{$disResource-> |
7693 |
uris |
7694 |
}; |
7695 |
|
7696 |
|
7697 |
|
7698 |
} |
7699 |
|
7700 |
|
7701 |
;} |
7702 |
|
7703 |
; |
7704 |
|
7705 |
|
7706 |
} |
7707 |
} |
7708 |
sub add_resource_uri ($$) { |
7709 |
my ($self, $uri) = @_; |
7710 |
|
7711 |
{ |
7712 |
|
7713 |
push |
7714 |
@{$self->{ |
7715 |
'mres' |
7716 |
}||=[]}, \$uri; |
7717 |
|
7718 |
|
7719 |
} |
7720 |
} |
7721 |
sub get_resource_uri_list ($) { |
7722 |
my ($self) = @_; |
7723 |
my $r = []; |
7724 |
|
7725 |
{ |
7726 |
|
7727 |
|
7728 |
$r = [map {$$_} @{$self->{ |
7729 |
'mres' |
7730 |
} or []}]; |
7731 |
|
7732 |
|
7733 |
} |
7734 |
$r} |
7735 |
sub get_resource_list ($) { |
7736 |
my ($self) = @_; |
7737 |
my $r = []; |
7738 |
|
7739 |
{ |
7740 |
|
7741 |
|
7742 |
{ |
7743 |
|
7744 |
local $Error::Depth = $Error::Depth + 1; |
7745 |
|
7746 |
{ |
7747 |
|
7748 |
|
7749 |
my |
7750 |
$db = $self-> |
7751 |
database |
7752 |
; |
7753 |
$r = [map { |
7754 |
$db-> |
7755 |
get_resource |
7756 |
($$_) |
7757 |
} @{$self->{ |
7758 |
'mres' |
7759 |
}}]; |
7760 |
|
7761 |
|
7762 |
|
7763 |
} |
7764 |
|
7765 |
|
7766 |
;} |
7767 |
|
7768 |
; |
7769 |
|
7770 |
|
7771 |
} |
7772 |
$r} |
7773 |
sub add_for_resource ($$) { |
7774 |
my ($self, $disResource) = @_; |
7775 |
|
7776 |
{ |
7777 |
|
7778 |
|
7779 |
{ |
7780 |
|
7781 |
local $Error::Depth = $Error::Depth + 1; |
7782 |
|
7783 |
{ |
7784 |
|
7785 |
|
7786 |
push |
7787 |
@{$self->{ |
7788 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#forList' |
7789 |
}||=[]}, |
7790 |
$disResource-> |
7791 |
uri_ref |
7792 |
; |
7793 |
|
7794 |
|
7795 |
|
7796 |
} |
7797 |
|
7798 |
|
7799 |
;} |
7800 |
|
7801 |
; |
7802 |
|
7803 |
|
7804 |
} |
7805 |
} |
7806 |
sub get_for_resource_list ($) { |
7807 |
my ($self) = @_; |
7808 |
my $r = []; |
7809 |
|
7810 |
{ |
7811 |
|
7812 |
|
7813 |
{ |
7814 |
|
7815 |
local $Error::Depth = $Error::Depth + 1; |
7816 |
|
7817 |
{ |
7818 |
|
7819 |
|
7820 |
my |
7821 |
$db = $self-> |
7822 |
database |
7823 |
; |
7824 |
$r = [map { |
7825 |
$db-> |
7826 |
get_for |
7827 |
($$_) |
7828 |
} @{$self->{ |
7829 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#forList' |
7830 |
}}]; |
7831 |
|
7832 |
|
7833 |
|
7834 |
} |
7835 |
|
7836 |
|
7837 |
;} |
7838 |
|
7839 |
; |
7840 |
|
7841 |
|
7842 |
} |
7843 |
$r} |
7844 |
sub target_namespace_uri ($;$) { |
7845 |
if (@_ == 1) {my ($self) = @_; |
7846 |
my $r; |
7847 |
|
7848 |
{ |
7849 |
|
7850 |
|
7851 |
$r = defined $self->{ |
7852 |
'dns' |
7853 |
} |
7854 |
? ${$self->{ |
7855 |
'dns' |
7856 |
}} : |
7857 |
undef |
7858 |
; |
7859 |
|
7860 |
|
7861 |
} |
7862 |
$r; |
7863 |
} else {my ($self, $given) = @_; |
7864 |
|
7865 |
{ |
7866 |
|
7867 |
if |
7868 |
(defined $given) { |
7869 |
$self->{ |
7870 |
'dns' |
7871 |
} = \$given; |
7872 |
} else { |
7873 |
CORE::delete $self->{ |
7874 |
'dns' |
7875 |
}; |
7876 |
} |
7877 |
|
7878 |
|
7879 |
} |
7880 |
} |
7881 |
} |
7882 |
sub get_super_resource_uri_list ($) { |
7883 |
my ($self) = @_; |
7884 |
my $r = []; |
7885 |
|
7886 |
{ |
7887 |
|
7888 |
|
7889 |
$r = [$self->{uri}]; |
7890 |
|
7891 |
|
7892 |
} |
7893 |
$r} |
7894 |
sub get_referring_module_uri_list ($) { |
7895 |
my ($self) = @_; |
7896 |
my $r = []; |
7897 |
|
7898 |
{ |
7899 |
|
7900 |
|
7901 |
$r = [grep {$self->{ |
7902 |
'ref' |
7903 |
}->{$_}} |
7904 |
keys %{$self->{ |
7905 |
'ref' |
7906 |
} or {}}]; |
7907 |
|
7908 |
|
7909 |
} |
7910 |
$r} |
7911 |
sub add_referring_module_uri ($$) { |
7912 |
my ($self, $uri) = @_; |
7913 |
|
7914 |
{ |
7915 |
|
7916 |
|
7917 |
$self->{ |
7918 |
'ref' |
7919 |
}->{$uri} = |
7920 |
1 |
7921 |
; |
7922 |
|
7923 |
|
7924 |
} |
7925 |
} |
7926 |
$Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISModuleDefinition>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core', |
7927 |
{'', |
7928 |
'1', |
7929 |
'1.0', |
7930 |
'1'}, |
7931 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#perl', |
7932 |
{'', |
7933 |
'1', |
7934 |
'1.0', |
7935 |
'1'}}; |
7936 |
$Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISModuleDefinition>} = 2; |
7937 |
package Message::Util::DIS::ManakaiDISModuleLite; |
7938 |
our $VERSION = 20061231.0921; |
7939 |
push our @ISA, 'Message::Util::IF::DISAnyResourcePerl', |
7940 |
'Message::Util::IF::DISModulePerl', |
7941 |
'Message::Util::IF::DISResourcePerlModule', |
7942 |
'Message::Util::IF::DISResourceProp'; |
7943 |
sub uri ($;$) { |
7944 |
if (@_ == 1) {my ($self) = @_; |
7945 |
my $r; |
7946 |
|
7947 |
{ |
7948 |
|
7949 |
|
7950 |
$r = $self->{uri}; |
7951 |
|
7952 |
|
7953 |
} |
7954 |
$r; |
7955 |
} else {my ($self) = @_; |
7956 |
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::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'uri'; |
7957 |
} |
7958 |
} |
7959 |
sub uri_ref ($;$) { |
7960 |
if (@_ == 1) {my ($self) = @_; |
7961 |
my $r; |
7962 |
|
7963 |
{ |
7964 |
|
7965 |
|
7966 |
$r = \ ($self->{uri}); |
7967 |
|
7968 |
|
7969 |
} |
7970 |
$r; |
7971 |
} else {my ($self) = @_; |
7972 |
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::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'uri_ref'; |
7973 |
} |
7974 |
} |
7975 |
sub uris ($;$) { |
7976 |
if (@_ == 1) {my ($self) = @_; |
7977 |
my $r; |
7978 |
|
7979 |
{ |
7980 |
|
7981 |
|
7982 |
$r = [$self->{uri}]; |
7983 |
|
7984 |
|
7985 |
} |
7986 |
$r; |
7987 |
} else {my ($self) = @_; |
7988 |
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::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'uris'; |
7989 |
} |
7990 |
} |
7991 |
sub is_same_resource ($$) { |
7992 |
my ($self, $anotherResource) = @_; |
7993 |
my $r = 0; |
7994 |
|
7995 |
{ |
7996 |
|
7997 |
if |
7998 |
(UNIVERSAL::isa ($anotherResource, |
7999 |
|
8000 |
'Message::Util::DIS::ManakaiDISAnyResource' |
8001 |
)) { |
8002 |
$r = $self->{uri} eq $anotherResource->{uri}; |
8003 |
} |
8004 |
|
8005 |
|
8006 |
} |
8007 |
$r} |
8008 |
sub name_uri ($;$) { |
8009 |
if (@_ == 1) {my ($self) = @_; |
8010 |
my $r; |
8011 |
|
8012 |
{ |
8013 |
|
8014 |
if |
8015 |
(defined $self->{localName}) { |
8016 |
$r = defined $self->{namespaceURI} |
8017 |
? ${$self->{namespaceURI}} . ${$self->{localName}} |
8018 |
: ${$self->{localName}}; |
8019 |
} |
8020 |
|
8021 |
|
8022 |
} |
8023 |
$r; |
8024 |
} else {my ($self) = @_; |
8025 |
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::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'name_uri'; |
8026 |
} |
8027 |
} |
8028 |
sub local_name ($;$) { |
8029 |
if (@_ == 1) {my ($self) = @_; |
8030 |
my $r; |
8031 |
|
8032 |
{ |
8033 |
|
8034 |
|
8035 |
$r = defined $self->{localName} ? ${$self->{localName}} : |
8036 |
undef |
8037 |
; |
8038 |
|
8039 |
|
8040 |
} |
8041 |
$r; |
8042 |
} else {my ($self) = @_; |
8043 |
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::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'local_name'; |
8044 |
} |
8045 |
} |
8046 |
sub namespace_uri ($;$) { |
8047 |
if (@_ == 1) {my ($self) = @_; |
8048 |
my $r; |
8049 |
|
8050 |
{ |
8051 |
|
8052 |
|
8053 |
$r = defined $self->{namespaceURI} ? ${$self->{namespaceURI}} : |
8054 |
undef |
8055 |
; |
8056 |
|
8057 |
|
8058 |
} |
8059 |
$r; |
8060 |
} else {my ($self) = @_; |
8061 |
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::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'namespace_uri'; |
8062 |
} |
8063 |
} |
8064 |
sub forp_uri ($;$) { |
8065 |
if (@_ == 1) {my ($self) = @_; |
8066 |
my $r; |
8067 |
|
8068 |
{ |
8069 |
|
8070 |
|
8071 |
$r = [@{$self->{forp}}]; |
8072 |
|
8073 |
|
8074 |
} |
8075 |
$r; |
8076 |
} else {my ($self) = @_; |
8077 |
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::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'forp_uri'; |
8078 |
} |
8079 |
} |
8080 |
sub is_for_uri ($$) { |
8081 |
my ($self, $forURI) = @_; |
8082 |
my $r = 0; |
8083 |
|
8084 |
{ |
8085 |
|
8086 |
|
8087 |
{ |
8088 |
|
8089 |
local $Error::Depth = $Error::Depth + 1; |
8090 |
|
8091 |
{ |
8092 |
|
8093 |
|
8094 |
C: |
8095 |
for my $this_for_uri ( |
8096 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#all' |
8097 |
, @{$self->{forp}||[]}) { |
8098 |
if ($this_for_uri eq $forURI) { ## Shortcut |
8099 |
$r = |
8100 |
1 |
8101 |
; |
8102 |
last C; |
8103 |
} |
8104 |
my $this_for = $self-> |
8105 |
database |
8106 |
|
8107 |
-> |
8108 |
get_for |
8109 |
|
8110 |
($this_for_uri); |
8111 |
if ($this_for-> |
8112 |
isa_uri |
8113 |
($forURI)) { |
8114 |
$r = |
8115 |
1 |
8116 |
; |
8117 |
last C; |
8118 |
} |
8119 |
} |
8120 |
|
8121 |
|
8122 |
|
8123 |
} |
8124 |
|
8125 |
|
8126 |
;} |
8127 |
|
8128 |
; |
8129 |
|
8130 |
|
8131 |
} |
8132 |
$r} |
8133 |
sub is_defined ($;$) { |
8134 |
if (@_ == 1) {my ($self) = @_; |
8135 |
my $r = 0; |
8136 |
|
8137 |
{ |
8138 |
|
8139 |
|
8140 |
$r = $self->{ |
8141 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isDefined' |
8142 |
}; |
8143 |
|
8144 |
|
8145 |
} |
8146 |
$r; |
8147 |
} else {my ($self, $given) = @_; |
8148 |
|
8149 |
{ |
8150 |
|
8151 |
|
8152 |
$self->{ |
8153 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#isDefined' |
8154 |
} = $given; |
8155 |
|
8156 |
|
8157 |
} |
8158 |
} |
8159 |
} |
8160 |
sub owner_module ($;$) { |
8161 |
if (@_ == 1) {my ($self) = @_; |
8162 |
my $r; |
8163 |
|
8164 |
{ |
8165 |
|
8166 |
|
8167 |
$r = $self; |
8168 |
|
8169 |
|
8170 |
} |
8171 |
$r; |
8172 |
} else {my ($self) = @_; |
8173 |
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::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'owner_module'; |
8174 |
} |
8175 |
} |
8176 |
sub owner_module_uri ($;$) { |
8177 |
if (@_ == 1) {my ($self) = @_; |
8178 |
my $r; |
8179 |
|
8180 |
{ |
8181 |
|
8182 |
|
8183 |
$r = $self->{uri}; |
8184 |
|
8185 |
|
8186 |
} |
8187 |
$r; |
8188 |
} else {my ($self) = @_; |
8189 |
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::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'owner_module_uri'; |
8190 |
} |
8191 |
} |
8192 |
sub owner_module_uri_ref ($;$) { |
8193 |
if (@_ == 1) {my ($self) = @_; |
8194 |
my $r; |
8195 |
|
8196 |
{ |
8197 |
|
8198 |
|
8199 |
$r = \ ($self->{uri}); |
8200 |
|
8201 |
|
8202 |
} |
8203 |
$r; |
8204 |
} else {my ($self, $given) = @_; |
8205 |
|
8206 |
{ |
8207 |
|
8208 |
|
8209 |
# no effect |
8210 |
|
8211 |
|
8212 |
} |
8213 |
} |
8214 |
} |
8215 |
sub database ($;$) { |
8216 |
if (@_ == 1) {my ($self) = @_; |
8217 |
my $r; |
8218 |
|
8219 |
{ |
8220 |
|
8221 |
|
8222 |
$r = $self->{db}; |
8223 |
|
8224 |
|
8225 |
} |
8226 |
$r; |
8227 |
} else {my ($self) = @_; |
8228 |
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::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'database'; |
8229 |
} |
8230 |
} |
8231 |
sub AUTOLOAD ($) { |
8232 |
my ($self) = @_; |
8233 |
|
8234 |
{ |
8235 |
|
8236 |
my |
8237 |
$al = our $AUTOLOAD; |
8238 |
$al =~ s/.+:://; |
8239 |
if ($al ne 'DESTROY') { |
8240 |
|
8241 |
|
8242 |
|
8243 |
{ |
8244 |
|
8245 |
local $Error::Depth = $Error::Depth + 1; |
8246 |
|
8247 |
{ |
8248 |
|
8249 |
|
8250 |
|
8251 |
$self-> |
8252 |
database |
8253 |
|
8254 |
-> |
8255 |
_pl_load_dis_database_module |
8256 |
($self); |
8257 |
|
8258 |
|
8259 |
|
8260 |
} |
8261 |
|
8262 |
|
8263 |
;} |
8264 |
|
8265 |
; |
8266 |
if (ref $self eq |
8267 |
'Message::Util::DIS::ManakaiDISModuleLite' |
8268 |
) { |
8269 |
|
8270 |
report Message::Util::DIS::ManakaiDISException -object => $self, '-type' => 'INVALID_SOURCE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'AUTOLOAD', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_NOT_DEFINED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $self->uri, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#moduleURI' => $self->uri; |
8271 |
|
8272 |
; |
8273 |
} |
8274 |
|
8275 |
my $code = $self->can ($al); |
8276 |
if ($code) { |
8277 |
goto &$code; |
8278 |
} else { |
8279 |
require Carp; |
8280 |
local $Carp::CarpLevel = $Error::Depth; |
8281 |
Carp::croak (qq<Can't locate method "$AUTOLOAD">); |
8282 |
} |
8283 |
|
8284 |
} # $al |
8285 |
|
8286 |
|
8287 |
} |
8288 |
} |
8289 |
sub target_namespace_uri ($;$) { |
8290 |
if (@_ == 1) {my ($self) = @_; |
8291 |
my $r; |
8292 |
|
8293 |
{ |
8294 |
|
8295 |
|
8296 |
$r = defined $self->{ |
8297 |
'dns' |
8298 |
} |
8299 |
? ${$self->{ |
8300 |
'dns' |
8301 |
}} : |
8302 |
undef |
8303 |
; |
8304 |
|
8305 |
|
8306 |
} |
8307 |
$r; |
8308 |
} else {my ($self) = @_; |
8309 |
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::Util::DIS::ManakaiDISModuleLite', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'target_namespace_uri'; |
8310 |
} |
8311 |
} |
8312 |
use overload |
8313 |
bool => sub () {1}, |
8314 |
'eq' => 'is_same_resource', |
8315 |
fallback => 1; |
8316 |
$Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISModuleLite>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core', |
8317 |
{'', |
8318 |
'1', |
8319 |
'1.0', |
8320 |
'1'}}; |
8321 |
$Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISModuleLite>} = 1; |
8322 |
package Message::Util::IF::DISFor; |
8323 |
our $VERSION = 20061231.0921; |
8324 |
package Message::Util::DIS::ManakaiDISForDefinition; |
8325 |
our $VERSION = 20061231.0921; |
8326 |
push our @ISA, 'Message::Util::DIS::Perl::ManakaiDISAnyResourcePerl', |
8327 |
'Message::Util::DIS::ManakaiDISPropertyAccessor', |
8328 |
'Message::Util::DIS::ManakaiDISAnyResource', |
8329 |
'Message::Util::IF::DISFor'; |
8330 |
sub uris ($;$) { |
8331 |
if (@_ == 1) {my ($self) = @_; |
8332 |
my $r; |
8333 |
|
8334 |
{ |
8335 |
|
8336 |
|
8337 |
$r = [$self->{uri}]; |
8338 |
|
8339 |
|
8340 |
} |
8341 |
$r; |
8342 |
} else {my ($self) = @_; |
8343 |
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::Util::DIS::ManakaiDISForDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'uris'; |
8344 |
} |
8345 |
} |
8346 |
sub isa_uri ($$) { |
8347 |
my ($self, $superURI) = @_; |
8348 |
my $r = 0; |
8349 |
|
8350 |
{ |
8351 |
|
8352 |
|
8353 |
$r = $self->{uri} eq $superURI ? |
8354 |
1 : |
8355 |
$self->{isa}->{$superURI}; |
8356 |
|
8357 |
|
8358 |
} |
8359 |
$r} |
8360 |
sub add_isa ($$) { |
8361 |
my ($self, $superFor) = @_; |
8362 |
|
8363 |
{ |
8364 |
|
8365 |
my |
8366 |
@from = ($self->{uri}, |
8367 |
grep {$self->{revISA}->{$_}} keys %{$self->{revISA}}); |
8368 |
my @to = ($superFor->{uri}, |
8369 |
grep {$superFor->{isa}->{$_}} keys %{$superFor->{isa}}); |
8370 |
|
8371 |
|
8372 |
{ |
8373 |
|
8374 |
local $Error::Depth = $Error::Depth + 1; |
8375 |
|
8376 |
{ |
8377 |
|
8378 |
|
8379 |
for |
8380 |
my $from (@from) { |
8381 |
for my $to (@to) { |
8382 |
$self->{db}-> |
8383 |
get_for |
8384 |
|
8385 |
($from)->{isa}->{$to} = |
8386 |
1 |
8387 |
; |
8388 |
$self->{db}-> |
8389 |
get_for |
8390 |
|
8391 |
($to)->{revISA}->{$from} = |
8392 |
1 |
8393 |
; |
8394 |
} |
8395 |
} |
8396 |
|
8397 |
|
8398 |
|
8399 |
} |
8400 |
|
8401 |
|
8402 |
;} |
8403 |
|
8404 |
; |
8405 |
|
8406 |
|
8407 |
} |
8408 |
} |
8409 |
sub forp_uri ($;$) { |
8410 |
if (@_ == 1) {my ($self) = @_; |
8411 |
my $r; |
8412 |
|
8413 |
{ |
8414 |
|
8415 |
|
8416 |
$r = []; |
8417 |
|
8418 |
|
8419 |
} |
8420 |
$r; |
8421 |
} else {my ($self) = @_; |
8422 |
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::Util::DIS::ManakaiDISForDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'forp_uri'; |
8423 |
} |
8424 |
} |
8425 |
sub is_for_uri ($$) { |
8426 |
my ($self, $forURI) = @_; |
8427 |
my $r = 0; |
8428 |
|
8429 |
{ |
8430 |
|
8431 |
|
8432 |
$r = |
8433 |
1 |
8434 |
; |
8435 |
|
8436 |
|
8437 |
} |
8438 |
$r} |
8439 |
sub name_uri ($;$) { |
8440 |
if (@_ == 1) {my ($self) = @_; |
8441 |
my $r; |
8442 |
|
8443 |
{ |
8444 |
|
8445 |
|
8446 |
$r = $self->{uri}; |
8447 |
|
8448 |
|
8449 |
} |
8450 |
$r; |
8451 |
} else {my ($self) = @_; |
8452 |
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::Util::DIS::ManakaiDISForDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'name_uri'; |
8453 |
} |
8454 |
} |
8455 |
sub get_super_resource_uri_list ($) { |
8456 |
my ($self) = @_; |
8457 |
my $r = []; |
8458 |
|
8459 |
{ |
8460 |
|
8461 |
|
8462 |
$r = [ |
8463 |
(grep {$self->{isa}->{$_}} keys %{$self->{isa}}), |
8464 |
(grep {$self->{aliasURI}->{$_}} keys %{$self->{aliasURI}}), |
8465 |
($self->{uri}), |
8466 |
]; |
8467 |
|
8468 |
|
8469 |
} |
8470 |
$r} |
8471 |
$Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISForDefinition>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core', |
8472 |
{'', |
8473 |
'1', |
8474 |
'1.0', |
8475 |
'1'}, |
8476 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#perl', |
8477 |
{'', |
8478 |
'1', |
8479 |
'1.0', |
8480 |
'1'}}; |
8481 |
$Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISForDefinition>} = 2; |
8482 |
package Message::Util::IF::DISResource; |
8483 |
our $VERSION = 20061231.0921; |
8484 |
package Message::Util::DIS::ManakaiDISResourceDefinition; |
8485 |
our $VERSION = 20061231.0921; |
8486 |
push our @ISA, 'Message::Util::DIS::ManakaiDISResourceMV', |
8487 |
'Message::Util::DIS::Perl::ManakaiDISResourcePerl', |
8488 |
'Message::Util::DIS::Perl::ManakaiDISPerlModuleDefinition', |
8489 |
'Message::Util::DIS::Perl::ManakaiDISAnyResourcePerl', |
8490 |
'Message::Util::DIS::ManakaiDISPropertyAccessor', |
8491 |
'Message::Util::DIS::ManakaiDISAnyResource', |
8492 |
'Message::Util::IF::DISResource'; |
8493 |
sub uris ($;$) { |
8494 |
if (@_ == 1) {my ($self) = @_; |
8495 |
my $r; |
8496 |
|
8497 |
{ |
8498 |
|
8499 |
|
8500 |
$r = [grep {$self->{aliasURI}->{$_}} keys %{$self->{aliasURI}}]; |
8501 |
|
8502 |
|
8503 |
} |
8504 |
$r; |
8505 |
} else {my ($self) = @_; |
8506 |
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::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'uris'; |
8507 |
} |
8508 |
} |
8509 |
sub is_subset_of_uri ($$%) { |
8510 |
my ($self, $superURI, %opt) = @_; |
8511 |
my $r = 0; |
8512 |
|
8513 |
{ |
8514 |
|
8515 |
|
8516 |
$r = $self->{aliasURI}->{$superURI} || $self->{subOf}->{$superURI}; |
8517 |
if (not $r and $opt{srinfo}) { |
8518 |
A: { |
8519 |
if ($opt{srinfo}->{resource}->{$superURI}) { |
8520 |
for my $this_uri (grep {$self->{aliasURI}->{$_}} |
8521 |
keys %{$self->{aliasURI}}) { |
8522 |
if ($opt{srinfo}->{resource}->{$superURI}->{aliasURI}->{$this_uri}) { |
8523 |
$r = |
8524 |
1 |
8525 |
; |
8526 |
last A; |
8527 |
} |
8528 |
if ($opt{srinfo}->{resource}->{$superURI}->{supOf}->{$this_uri}) { |
8529 |
$r = |
8530 |
1 |
8531 |
; |
8532 |
last A; |
8533 |
} |
8534 |
} |
8535 |
} |
8536 |
for my $this_uri (grep {$self->{aliasURI}->{$_}} |
8537 |
keys %{$self->{aliasURI}}) { |
8538 |
if ($opt{srinfo}->{resource}->{$this_uri}) { |
8539 |
if ($opt{srinfo}->{resource}->{$this_uri}->{aliasURI}->{$superURI}) { |
8540 |
$r = |
8541 |
1 |
8542 |
; |
8543 |
last A; |
8544 |
} |
8545 |
} |
8546 |
} |
8547 |
} # A |
8548 |
} |
8549 |
|
8550 |
|
8551 |
} |
8552 |
$r} |
8553 |
sub add_super_resource ($$%) { |
8554 |
my ($self, $superRes, %opt) = @_; |
8555 |
|
8556 |
{ |
8557 |
|
8558 |
my |
8559 |
@from = ($self->{uri}, |
8560 |
grep {$self->{supOf}->{$_}} keys %{$self->{supOf}||{}}); |
8561 |
my @to = ($superRes->{uri}, |
8562 |
grep {$superRes->{subOf}->{$_}} keys %{$superRes->{subOf}||{}}); |
8563 |
|
8564 |
|
8565 |
{ |
8566 |
|
8567 |
local $Error::Depth = $Error::Depth + 1; |
8568 |
|
8569 |
{ |
8570 |
|
8571 |
|
8572 |
for |
8573 |
my $from (@from) { |
8574 |
for my $to (@to) { |
8575 |
$self->{db}-> |
8576 |
get_resource |
8577 |
|
8578 |
($from)->{subOf}->{$to} = |
8579 |
1 |
8580 |
; |
8581 |
$opt{srinfo}->{resource}->{$from}->{subOf}->{$to} = |
8582 |
1 |
8583 |
; |
8584 |
$self->{db}-> |
8585 |
get_resource |
8586 |
|
8587 |
($to)->{supOf}->{$from} = |
8588 |
1 |
8589 |
; |
8590 |
$opt{srinfo}->{resource}->{$to}->{supOf}->{$from} = |
8591 |
1 |
8592 |
; |
8593 |
} |
8594 |
} |
8595 |
|
8596 |
|
8597 |
|
8598 |
} |
8599 |
|
8600 |
|
8601 |
;} |
8602 |
|
8603 |
; |
8604 |
|
8605 |
|
8606 |
} |
8607 |
} |
8608 |
sub merge_as_alias ($$%) { |
8609 |
my ($self, $aliasResource, %opt) = @_; |
8610 |
|
8611 |
{ |
8612 |
|
8613 |
if |
8614 |
(not $opt{no_equality_check} and $self eq $aliasResource) { |
8615 |
|
8616 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $opt{node}, '-type' => 'HIERARCHY_REQUEST_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'merge_as_alias', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#MERGE_ITSELF_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $self->uri; |
8617 |
|
8618 |
; |
8619 |
} |
8620 |
for my $uri ($aliasResource->{uri}, |
8621 |
grep {$aliasResource->{aliasURI}->{$_}} |
8622 |
keys %{$aliasResource->{aliasURI}}) { |
8623 |
$self->{aliasURI}->{$uri} = |
8624 |
1 |
8625 |
; |
8626 |
$self->{db}->{resDef}->{$uri} = $self; |
8627 |
$self->{subOf}->{$uri} = |
8628 |
1 |
8629 |
; |
8630 |
$self->{supOf}->{$uri} = |
8631 |
1 |
8632 |
; |
8633 |
} |
8634 |
for my $uri (grep {$aliasResource->{subOf}->{$_}} |
8635 |
keys %{$aliasResource->{subOf}||{}}) { |
8636 |
$self->{subOf}->{$uri} = |
8637 |
1 |
8638 |
; |
8639 |
} |
8640 |
for my $uri (grep {$aliasResource->{supOf}->{$_}} |
8641 |
keys %{$aliasResource->{supOf}||{}}) { |
8642 |
$self->{supOf}->{$uri} = |
8643 |
1 |
8644 |
; |
8645 |
} |
8646 |
my @from = grep {$self->{supOf}->{$_}} keys %{$self->{supOf}||{}}; |
8647 |
my @to = grep {$self->{subOf}->{$_}} keys %{$self->{subOf}||{}}; |
8648 |
|
8649 |
|
8650 |
{ |
8651 |
|
8652 |
local $Error::Depth = $Error::Depth + 1; |
8653 |
|
8654 |
{ |
8655 |
|
8656 |
|
8657 |
for |
8658 |
my $from (@from) { |
8659 |
for my $to (@to) { |
8660 |
$self->{db}-> |
8661 |
get_resource |
8662 |
|
8663 |
($from)->{subOf}->{$to} = |
8664 |
1 |
8665 |
; |
8666 |
$opt{srinfo}->{resource}->{$from}->{subOf}->{$to} = |
8667 |
1 |
8668 |
; |
8669 |
$self->{db}-> |
8670 |
get_resource |
8671 |
|
8672 |
($to)->{supOf}->{$from} = |
8673 |
1 |
8674 |
; |
8675 |
$opt{srinfo}->{resource}->{$to}->{supOf}->{$from} = |
8676 |
1 |
8677 |
; |
8678 |
} |
8679 |
} |
8680 |
|
8681 |
|
8682 |
|
8683 |
} |
8684 |
|
8685 |
|
8686 |
;} |
8687 |
|
8688 |
; |
8689 |
|
8690 |
|
8691 |
} |
8692 |
} |
8693 |
sub dis_data_type_resource ($;$) { |
8694 |
if (@_ == 1) {my ($self) = @_; |
8695 |
my $r; |
8696 |
|
8697 |
{ |
8698 |
|
8699 |
|
8700 |
{ |
8701 |
|
8702 |
local $Error::Depth = $Error::Depth + 1; |
8703 |
|
8704 |
{ |
8705 |
|
8706 |
|
8707 |
if |
8708 |
(UNIVERSAL::isa ($self->{ |
8709 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Type' |
8710 |
}, |
8711 |
'Message::Util::IF::DVURIValue' |
8712 |
)) { |
8713 |
$r = $self->{ |
8714 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Type' |
8715 |
}-> |
8716 |
get_resource |
8717 |
|
8718 |
($self-> |
8719 |
database |
8720 |
); |
8721 |
} else { |
8722 |
my $pr = $self-> |
8723 |
dynamic_parent_resource |
8724 |
; |
8725 |
$r = $pr-> |
8726 |
dis_data_type_resource if |
8727 |
$pr; |
8728 |
} |
8729 |
|
8730 |
|
8731 |
|
8732 |
} |
8733 |
|
8734 |
|
8735 |
;} |
8736 |
|
8737 |
; |
8738 |
unless ($r) { |
8739 |
|
8740 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $self->source_element, '-type' => 'INVALID_SOURCE_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/DIS#NO_DIS_TYPE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dis_data_type_resource', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $self->uri; |
8741 |
|
8742 |
; |
8743 |
} |
8744 |
|
8745 |
|
8746 |
} |
8747 |
$r; |
8748 |
} else {my ($self) = @_; |
8749 |
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::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dis_data_type_resource'; |
8750 |
} |
8751 |
} |
8752 |
sub dis_data_type_value ($;$) { |
8753 |
if (@_ == 1) {my ($self) = @_; |
8754 |
my $r; |
8755 |
|
8756 |
{ |
8757 |
|
8758 |
|
8759 |
{ |
8760 |
|
8761 |
local $Error::Depth = $Error::Depth + 1; |
8762 |
|
8763 |
{ |
8764 |
|
8765 |
|
8766 |
if |
8767 |
(UNIVERSAL::isa ($self->{ |
8768 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Type' |
8769 |
}, |
8770 |
'Message::Util::IF::DVURIValue' |
8771 |
)) { |
8772 |
$r = $self->{ |
8773 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Type' |
8774 |
}; |
8775 |
} else { |
8776 |
my $pr = $self-> |
8777 |
dynamic_parent_resource |
8778 |
; |
8779 |
$r = $pr-> |
8780 |
dis_data_type_value if |
8781 |
$pr; |
8782 |
} |
8783 |
|
8784 |
|
8785 |
|
8786 |
} |
8787 |
|
8788 |
|
8789 |
;} |
8790 |
|
8791 |
; |
8792 |
unless ($r) { |
8793 |
|
8794 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $self->source_element, '-type' => 'INVALID_SOURCE_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/DIS#NO_DIS_TYPE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dis_data_type_value', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $self->uri; |
8795 |
|
8796 |
; |
8797 |
} |
8798 |
|
8799 |
|
8800 |
} |
8801 |
$r; |
8802 |
} else {my ($self) = @_; |
8803 |
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::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dis_data_type_value'; |
8804 |
} |
8805 |
} |
8806 |
sub dis_actual_data_type_resource ($;$) { |
8807 |
if (@_ == 1) {my ($self) = @_; |
8808 |
my $r; |
8809 |
|
8810 |
{ |
8811 |
|
8812 |
|
8813 |
{ |
8814 |
|
8815 |
local $Error::Depth = $Error::Depth + 1; |
8816 |
|
8817 |
{ |
8818 |
|
8819 |
|
8820 |
if |
8821 |
(UNIVERSAL::isa ($self->{ |
8822 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--actualType' |
8823 |
}, |
8824 |
|
8825 |
'Message::Util::IF::DVURIValue' |
8826 |
)) { |
8827 |
$r = $self->{ |
8828 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--actualType' |
8829 |
}-> |
8830 |
get_resource |
8831 |
|
8832 |
($self-> |
8833 |
database |
8834 |
); |
8835 |
} elsif (UNIVERSAL::isa ($self->{ |
8836 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Type' |
8837 |
}, |
8838 |
|
8839 |
'Message::Util::IF::DVURIValue' |
8840 |
)) { |
8841 |
$r = $self->{ |
8842 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Type' |
8843 |
}-> |
8844 |
get_resource |
8845 |
|
8846 |
($self-> |
8847 |
database |
8848 |
); |
8849 |
} else { |
8850 |
my $pr = $self-> |
8851 |
dynamic_parent_resource |
8852 |
; |
8853 |
$r = $pr-> |
8854 |
dis_actual_data_type_resource if |
8855 |
$pr; |
8856 |
} |
8857 |
|
8858 |
|
8859 |
|
8860 |
} |
8861 |
|
8862 |
|
8863 |
;} |
8864 |
|
8865 |
; |
8866 |
unless ($r) { |
8867 |
|
8868 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $self->source_element, '-type' => 'INVALID_SOURCE_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/DIS#NO_DIS_TYPE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dis_actual_data_type_resource', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $self->uri; |
8869 |
|
8870 |
; |
8871 |
} |
8872 |
|
8873 |
|
8874 |
} |
8875 |
$r; |
8876 |
} else {my ($self) = @_; |
8877 |
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::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dis_actual_data_type_resource'; |
8878 |
} |
8879 |
} |
8880 |
sub dis_actual_data_type_value ($;$) { |
8881 |
if (@_ == 1) {my ($self) = @_; |
8882 |
my $r; |
8883 |
|
8884 |
{ |
8885 |
|
8886 |
|
8887 |
{ |
8888 |
|
8889 |
local $Error::Depth = $Error::Depth + 1; |
8890 |
|
8891 |
{ |
8892 |
|
8893 |
|
8894 |
if |
8895 |
(UNIVERSAL::isa ($self->{ |
8896 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--actualType' |
8897 |
}, |
8898 |
|
8899 |
'Message::Util::IF::DVURIValue' |
8900 |
)) { |
8901 |
$r = $self->{ |
8902 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--actualType' |
8903 |
}; |
8904 |
} elsif (UNIVERSAL::isa ($self->{ |
8905 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Type' |
8906 |
}, |
8907 |
|
8908 |
'Message::Util::IF::DVURIValue' |
8909 |
)) { |
8910 |
$r = $self->{ |
8911 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Type' |
8912 |
}; |
8913 |
} else { |
8914 |
my $pr = $self-> |
8915 |
dynamic_parent_resource |
8916 |
; |
8917 |
$r = $pr-> |
8918 |
dis_actual_data_type_value if |
8919 |
$pr; |
8920 |
} |
8921 |
|
8922 |
|
8923 |
|
8924 |
} |
8925 |
|
8926 |
|
8927 |
;} |
8928 |
|
8929 |
; |
8930 |
unless ($r) { |
8931 |
|
8932 |
report Message::Util::DIS::ManakaiDISException -object => $self, 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' => $self->source_element, '-type' => 'INVALID_SOURCE_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/DIS#NO_DIS_TYPE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dis_actual_data_type_value', 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' => $self->uri; |
8933 |
|
8934 |
; |
8935 |
} |
8936 |
|
8937 |
|
8938 |
} |
8939 |
$r; |
8940 |
} else {my ($self) = @_; |
8941 |
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::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dis_actual_data_type_value'; |
8942 |
} |
8943 |
} |
8944 |
sub _add_child_resource ($$) { |
8945 |
my ($self, $disResource) = @_; |
8946 |
|
8947 |
{ |
8948 |
|
8949 |
|
8950 |
{ |
8951 |
|
8952 |
local $Error::Depth = $Error::Depth + 1; |
8953 |
|
8954 |
{ |
8955 |
|
8956 |
|
8957 |
push |
8958 |
@{$self->{ |
8959 |
'curis' |
8960 |
}||=[]}, |
8961 |
$disResource-> |
8962 |
uri_ref |
8963 |
; |
8964 |
|
8965 |
|
8966 |
|
8967 |
} |
8968 |
|
8969 |
|
8970 |
;} |
8971 |
|
8972 |
; |
8973 |
|
8974 |
|
8975 |
} |
8976 |
} |
8977 |
sub _add_dynamic_child_resource ($$) { |
8978 |
my ($self, $disResource) = @_; |
8979 |
|
8980 |
{ |
8981 |
|
8982 |
|
8983 |
{ |
8984 |
|
8985 |
local $Error::Depth = $Error::Depth + 1; |
8986 |
|
8987 |
{ |
8988 |
|
8989 |
|
8990 |
push |
8991 |
@{$self->{ |
8992 |
'dcuris' |
8993 |
}||=[]}, |
8994 |
$disResource-> |
8995 |
uri_ref |
8996 |
; |
8997 |
|
8998 |
|
8999 |
|
9000 |
} |
9001 |
|
9002 |
|
9003 |
;} |
9004 |
|
9005 |
; |
9006 |
|
9007 |
|
9008 |
} |
9009 |
} |
9010 |
sub get_child_resource_list ($) { |
9011 |
my ($self) = @_; |
9012 |
my $r = []; |
9013 |
|
9014 |
{ |
9015 |
|
9016 |
|
9017 |
{ |
9018 |
|
9019 |
local $Error::Depth = $Error::Depth + 1; |
9020 |
|
9021 |
{ |
9022 |
|
9023 |
|
9024 |
my |
9025 |
$db = $self-> |
9026 |
database |
9027 |
; |
9028 |
$r = [map { |
9029 |
$db-> |
9030 |
get_resource |
9031 |
($$_) |
9032 |
} @{$self->{ |
9033 |
'curis' |
9034 |
}}]; |
9035 |
|
9036 |
|
9037 |
|
9038 |
} |
9039 |
|
9040 |
|
9041 |
;} |
9042 |
|
9043 |
; |
9044 |
|
9045 |
|
9046 |
} |
9047 |
$r} |
9048 |
sub get_dynamic_child_resource_list ($) { |
9049 |
my ($self) = @_; |
9050 |
my $r = []; |
9051 |
|
9052 |
{ |
9053 |
|
9054 |
|
9055 |
{ |
9056 |
|
9057 |
local $Error::Depth = $Error::Depth + 1; |
9058 |
|
9059 |
{ |
9060 |
|
9061 |
|
9062 |
my |
9063 |
$db = $self-> |
9064 |
database |
9065 |
; |
9066 |
$r = [map { |
9067 |
$db-> |
9068 |
get_resource |
9069 |
($$_) |
9070 |
} @{$self->{ |
9071 |
'dcuris' |
9072 |
}}]; |
9073 |
|
9074 |
|
9075 |
|
9076 |
} |
9077 |
|
9078 |
|
9079 |
;} |
9080 |
|
9081 |
; |
9082 |
|
9083 |
|
9084 |
} |
9085 |
$r} |
9086 |
sub get_child_resource_by_type ($$) { |
9087 |
my ($self, $typeURI) = @_; |
9088 |
my $r; |
9089 |
|
9090 |
{ |
9091 |
|
9092 |
|
9093 |
{ |
9094 |
|
9095 |
local $Error::Depth = $Error::Depth + 1; |
9096 |
|
9097 |
{ |
9098 |
|
9099 |
|
9100 |
my |
9101 |
$db = $self-> |
9102 |
database |
9103 |
; |
9104 |
C: for my $cr_uri (@{$self->{ |
9105 |
'curis' |
9106 |
}||[]}) { |
9107 |
my $cr = $db-> |
9108 |
get_resource |
9109 |
($$cr_uri); |
9110 |
if ($cr-> |
9111 |
is_type_uri |
9112 |
($typeURI)) { |
9113 |
$r = $cr; |
9114 |
last C; |
9115 |
} |
9116 |
} |
9117 |
|
9118 |
|
9119 |
|
9120 |
} |
9121 |
|
9122 |
|
9123 |
;} |
9124 |
|
9125 |
; |
9126 |
|
9127 |
|
9128 |
} |
9129 |
$r} |
9130 |
sub get_child_resource_list_by_type ($$) { |
9131 |
my ($self, $typeURI) = @_; |
9132 |
my $r = []; |
9133 |
|
9134 |
{ |
9135 |
|
9136 |
|
9137 |
{ |
9138 |
|
9139 |
local $Error::Depth = $Error::Depth + 1; |
9140 |
|
9141 |
{ |
9142 |
|
9143 |
|
9144 |
my |
9145 |
$db = $self-> |
9146 |
database |
9147 |
; |
9148 |
$r = [grep { |
9149 |
$_-> |
9150 |
is_type_uri |
9151 |
($typeURI) |
9152 |
} map { |
9153 |
$db-> |
9154 |
get_resource |
9155 |
($$_) |
9156 |
} @{$self->{ |
9157 |
'curis' |
9158 |
}||[]}]; |
9159 |
|
9160 |
|
9161 |
|
9162 |
} |
9163 |
|
9164 |
|
9165 |
;} |
9166 |
|
9167 |
; |
9168 |
|
9169 |
|
9170 |
} |
9171 |
$r} |
9172 |
sub get_child_resource_by_name_and_type ($$$) { |
9173 |
my ($self, $localName, $typeURI) = @_; |
9174 |
my $r; |
9175 |
|
9176 |
{ |
9177 |
|
9178 |
|
9179 |
{ |
9180 |
|
9181 |
local $Error::Depth = $Error::Depth + 1; |
9182 |
|
9183 |
{ |
9184 |
|
9185 |
|
9186 |
my |
9187 |
$db = $self-> |
9188 |
database |
9189 |
; |
9190 |
C: for my $cr_uri (@{$self->{ |
9191 |
'curis' |
9192 |
}||[]}) { |
9193 |
my $cr = $db-> |
9194 |
get_resource |
9195 |
($$cr_uri); |
9196 |
my $ln = $cr-> |
9197 |
local_name |
9198 |
; |
9199 |
if (defined $ln and $ln eq $localName and |
9200 |
$cr-> |
9201 |
is_type_uri |
9202 |
($typeURI)) { |
9203 |
$r = $cr; |
9204 |
last C; |
9205 |
} |
9206 |
} |
9207 |
|
9208 |
|
9209 |
|
9210 |
} |
9211 |
|
9212 |
|
9213 |
;} |
9214 |
|
9215 |
; |
9216 |
|
9217 |
|
9218 |
} |
9219 |
$r} |
9220 |
sub get_const_resource_by_name ($$) { |
9221 |
my ($self, $localName) = @_; |
9222 |
my $r; |
9223 |
|
9224 |
{ |
9225 |
|
9226 |
|
9227 |
{ |
9228 |
|
9229 |
local $Error::Depth = $Error::Depth + 1; |
9230 |
|
9231 |
{ |
9232 |
|
9233 |
|
9234 |
my |
9235 |
@constGroup; |
9236 |
my $db = $self-> |
9237 |
database |
9238 |
; |
9239 |
C: for my $cr_uri (@{$self->{ |
9240 |
'curis' |
9241 |
}||[]}) { |
9242 |
my $cr = $db-> |
9243 |
get_resource |
9244 |
($$cr_uri); |
9245 |
my $ln = $cr-> |
9246 |
local_name |
9247 |
; |
9248 |
if ($ln and $ln eq $localName and |
9249 |
$cr-> |
9250 |
is_type_uri |
9251 |
( |
9252 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Lang#Const' |
9253 |
)) { |
9254 |
$r = $cr; |
9255 |
last C; |
9256 |
} elsif ($cr-> |
9257 |
is_type_uri |
9258 |
|
9259 |
( |
9260 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Lang#ConstGroup' |
9261 |
)) { |
9262 |
push @constGroup, $cr; |
9263 |
} |
9264 |
} |
9265 |
unless ($r) { |
9266 |
D: for my $cg (@constGroup) { |
9267 |
$r = $cg-> |
9268 |
get_child_resource_by_name_and_type |
9269 |
|
9270 |
($localName, |
9271 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Lang#Const' |
9272 |
); |
9273 |
last D if $r; |
9274 |
} |
9275 |
} |
9276 |
|
9277 |
|
9278 |
|
9279 |
} |
9280 |
|
9281 |
|
9282 |
;} |
9283 |
|
9284 |
; |
9285 |
|
9286 |
|
9287 |
} |
9288 |
$r} |
9289 |
sub parent_resource ($;$) { |
9290 |
if (@_ == 1) {my ($self) = @_; |
9291 |
my $r; |
9292 |
|
9293 |
{ |
9294 |
|
9295 |
|
9296 |
{ |
9297 |
|
9298 |
local $Error::Depth = $Error::Depth + 1; |
9299 |
|
9300 |
{ |
9301 |
|
9302 |
|
9303 |
if |
9304 |
($self->{ |
9305 |
'puri' |
9306 |
}) { |
9307 |
$r = $self-> |
9308 |
database |
9309 |
|
9310 |
-> |
9311 |
get_resource |
9312 |
|
9313 |
(${$self->{ |
9314 |
'puri' |
9315 |
}}); |
9316 |
} |
9317 |
|
9318 |
|
9319 |
|
9320 |
} |
9321 |
|
9322 |
|
9323 |
;} |
9324 |
|
9325 |
; |
9326 |
|
9327 |
|
9328 |
} |
9329 |
$r; |
9330 |
} else {my ($self, $given) = @_; |
9331 |
|
9332 |
{ |
9333 |
|
9334 |
|
9335 |
{ |
9336 |
|
9337 |
local $Error::Depth = $Error::Depth + 1; |
9338 |
|
9339 |
{ |
9340 |
|
9341 |
|
9342 |
if |
9343 |
($given) { |
9344 |
$self->{ |
9345 |
'puri' |
9346 |
} |
9347 |
= $given-> |
9348 |
uri_ref |
9349 |
; |
9350 |
} else { |
9351 |
CORE::delete $self->{ |
9352 |
'puri' |
9353 |
}; |
9354 |
} |
9355 |
|
9356 |
|
9357 |
|
9358 |
} |
9359 |
|
9360 |
|
9361 |
;} |
9362 |
|
9363 |
; |
9364 |
|
9365 |
|
9366 |
} |
9367 |
} |
9368 |
} |
9369 |
sub dynamic_parent_resource ($;$) { |
9370 |
if (@_ == 1) {my ($self) = @_; |
9371 |
my $r; |
9372 |
|
9373 |
{ |
9374 |
|
9375 |
|
9376 |
{ |
9377 |
|
9378 |
local $Error::Depth = $Error::Depth + 1; |
9379 |
|
9380 |
{ |
9381 |
|
9382 |
|
9383 |
if |
9384 |
($self->{ |
9385 |
'dpuri' |
9386 |
}) { |
9387 |
$r = $self-> |
9388 |
database |
9389 |
|
9390 |
-> |
9391 |
get_resource |
9392 |
|
9393 |
(${$self->{ |
9394 |
'dpuri' |
9395 |
}}); |
9396 |
} |
9397 |
|
9398 |
|
9399 |
|
9400 |
} |
9401 |
|
9402 |
|
9403 |
;} |
9404 |
|
9405 |
; |
9406 |
|
9407 |
|
9408 |
} |
9409 |
$r; |
9410 |
} else {my ($self, $given) = @_; |
9411 |
|
9412 |
{ |
9413 |
|
9414 |
|
9415 |
{ |
9416 |
|
9417 |
local $Error::Depth = $Error::Depth + 1; |
9418 |
|
9419 |
{ |
9420 |
|
9421 |
|
9422 |
if |
9423 |
($given) { |
9424 |
$self->{ |
9425 |
'dpuri' |
9426 |
} |
9427 |
= $given-> |
9428 |
uri_ref |
9429 |
; |
9430 |
} else { |
9431 |
CORE::delete $self->{ |
9432 |
'dpuri' |
9433 |
}; |
9434 |
} |
9435 |
|
9436 |
|
9437 |
|
9438 |
} |
9439 |
|
9440 |
|
9441 |
;} |
9442 |
|
9443 |
; |
9444 |
|
9445 |
|
9446 |
} |
9447 |
} |
9448 |
} |
9449 |
sub owner_class_node_uri ($;$) { |
9450 |
if (@_ == 1) {my ($self) = @_; |
9451 |
my $r; |
9452 |
|
9453 |
{ |
9454 |
|
9455 |
if |
9456 |
(exists $self->{ |
9457 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#ownerClass' |
9458 |
}) { |
9459 |
$r = $self->{ |
9460 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#ownerClass' |
9461 |
}; |
9462 |
} else { |
9463 |
my $res = $self; |
9464 |
|
9465 |
|
9466 |
{ |
9467 |
|
9468 |
local $Error::Depth = $Error::Depth + 1; |
9469 |
|
9470 |
{ |
9471 |
|
9472 |
|
9473 |
RES: |
9474 |
{ |
9475 |
if ($res-> |
9476 |
is_type_uri |
9477 |
|
9478 |
( |
9479 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#Class' |
9480 |
)) { |
9481 |
$r = $res-> |
9482 |
source_node_id |
9483 |
; |
9484 |
} else { |
9485 |
$res = $res-> |
9486 |
parent_resource |
9487 |
; |
9488 |
redo RES if $res; |
9489 |
} |
9490 |
} |
9491 |
|
9492 |
|
9493 |
|
9494 |
} |
9495 |
|
9496 |
|
9497 |
;} |
9498 |
|
9499 |
; |
9500 |
$self->{ |
9501 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#ownerClass' |
9502 |
} = $r; |
9503 |
} |
9504 |
|
9505 |
|
9506 |
} |
9507 |
$r; |
9508 |
} else {my ($self) = @_; |
9509 |
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::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'owner_class_node_uri'; |
9510 |
} |
9511 |
} |
9512 |
sub dis_is_null_value ($;$) { |
9513 |
if (@_ == 1) {my ($self) = @_; |
9514 |
my $r = 0; |
9515 |
|
9516 |
{ |
9517 |
|
9518 |
if |
9519 |
($self->{ |
9520 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Value' |
9521 |
}) { |
9522 |
$r = $self->{ |
9523 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--Value' |
9524 |
}-> |
9525 |
is_null |
9526 |
; |
9527 |
} |
9528 |
|
9529 |
|
9530 |
} |
9531 |
$r; |
9532 |
} else {my ($self) = @_; |
9533 |
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::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'dis_is_null_value'; |
9534 |
} |
9535 |
} |
9536 |
sub feature_name_list ($;$) { |
9537 |
if (@_ == 1) {my ($self) = @_; |
9538 |
my $r = []; |
9539 |
|
9540 |
{ |
9541 |
|
9542 |
|
9543 |
{ |
9544 |
|
9545 |
local $Error::Depth = $Error::Depth + 1; |
9546 |
|
9547 |
{ |
9548 |
|
9549 |
|
9550 |
|
9551 |
$r = [map {lc} @{$self-> |
9552 |
get_property_text_list |
9553 |
|
9554 |
( |
9555 |
'http://suika.fam.cx/~wakaba/archive/2004/dom/feature#name' |
9556 |
)}]; |
9557 |
unless (@$r) { |
9558 |
## TODO: instance feature |
9559 |
my $pr = $self-> |
9560 |
parent_resource |
9561 |
; |
9562 |
if ($pr) { |
9563 |
if ($pr-> |
9564 |
is_type_uri |
9565 |
( |
9566 |
'http://suika.fam.cx/~wakaba/archive/2004/dom/feature#Feature' |
9567 |
) and |
9568 |
not $pr-> |
9569 |
is_anonymous |
9570 |
) { |
9571 |
push @$r, @{$pr-> |
9572 |
feature_name_list |
9573 |
}; |
9574 |
} |
9575 |
} |
9576 |
} |
9577 |
unless (@$r) { |
9578 |
if ($self-> |
9579 |
is_anonymous |
9580 |
) { |
9581 |
my $ln = $self-> |
9582 |
local_name |
9583 |
; |
9584 |
push @$r, lc $ln if defined $ln; |
9585 |
} else { |
9586 |
push @$r, lc $self-> |
9587 |
name_uri |
9588 |
; |
9589 |
} |
9590 |
} |
9591 |
|
9592 |
|
9593 |
|
9594 |
} |
9595 |
|
9596 |
|
9597 |
;} |
9598 |
|
9599 |
; |
9600 |
|
9601 |
|
9602 |
} |
9603 |
$r; |
9604 |
} else {my ($self) = @_; |
9605 |
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::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'feature_name_list'; |
9606 |
} |
9607 |
} |
9608 |
sub multiple_properties_uri ($;$) { |
9609 |
if (@_ == 1) {my ($self) = @_; |
9610 |
my $r = ''; |
9611 |
|
9612 |
{ |
9613 |
|
9614 |
|
9615 |
{ |
9616 |
|
9617 |
local $Error::Depth = $Error::Depth + 1; |
9618 |
|
9619 |
{ |
9620 |
|
9621 |
|
9622 |
if |
9623 |
($self->{ |
9624 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--multipleProperties' |
9625 |
}) { |
9626 |
$r = $self->{ |
9627 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--multipleProperties' |
9628 |
} |
9629 |
-> |
9630 |
get_resource |
9631 |
|
9632 |
($self-> |
9633 |
database |
9634 |
) |
9635 |
-> |
9636 |
uri |
9637 |
; |
9638 |
} else { |
9639 |
$r = |
9640 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#OrderedList' |
9641 |
; |
9642 |
} |
9643 |
|
9644 |
|
9645 |
|
9646 |
} |
9647 |
|
9648 |
|
9649 |
;} |
9650 |
|
9651 |
; |
9652 |
|
9653 |
|
9654 |
} |
9655 |
$r; |
9656 |
} else {my ($self) = @_; |
9657 |
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::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'multiple_properties_uri'; |
9658 |
} |
9659 |
} |
9660 |
sub default_lextype_uri ($;$) { |
9661 |
if (@_ == 1) {my ($self) = @_; |
9662 |
my $r = ''; |
9663 |
|
9664 |
{ |
9665 |
|
9666 |
|
9667 |
{ |
9668 |
|
9669 |
local $Error::Depth = $Error::Depth + 1; |
9670 |
|
9671 |
{ |
9672 |
|
9673 |
|
9674 |
if |
9675 |
($self->{ |
9676 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--dataType' |
9677 |
}) { |
9678 |
$r = $self->{ |
9679 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--dataType' |
9680 |
} |
9681 |
-> |
9682 |
get_resource |
9683 |
|
9684 |
($self-> |
9685 |
database |
9686 |
) |
9687 |
-> |
9688 |
uri |
9689 |
; |
9690 |
} else { |
9691 |
$r = |
9692 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#String' |
9693 |
; |
9694 |
} |
9695 |
|
9696 |
|
9697 |
|
9698 |
} |
9699 |
|
9700 |
|
9701 |
;} |
9702 |
|
9703 |
; |
9704 |
|
9705 |
|
9706 |
} |
9707 |
$r; |
9708 |
} else {my ($self) = @_; |
9709 |
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::Util::DIS::ManakaiDISResourceDefinition', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'default_lextype_uri'; |
9710 |
} |
9711 |
} |
9712 |
sub get_super_resource_uri_list ($) { |
9713 |
my ($self) = @_; |
9714 |
my $r = []; |
9715 |
|
9716 |
{ |
9717 |
|
9718 |
|
9719 |
$r = [ |
9720 |
(grep {$self->{subOf}->{$_}} keys %{$self->{subOf}}), |
9721 |
(grep {$self->{aliasURI}->{$_}} keys %{$self->{aliasURI}}), |
9722 |
]; |
9723 |
|
9724 |
|
9725 |
} |
9726 |
$r} |
9727 |
use overload |
9728 |
bool => sub () {1}, |
9729 |
'<=>' => sub ($$) { |
9730 |
my ($self, $anotherResource) = @_; |
9731 |
my $r = 0; |
9732 |
|
9733 |
{ |
9734 |
|
9735 |
if |
9736 |
(UNIVERSAL::isa ($anotherResource, |
9737 |
|
9738 |
'Message::Util::DIS::ManakaiDISResourceDefinition' |
9739 |
)) { |
9740 |
$r = $self->{seq} <=> $anotherResource->{seq}; |
9741 |
} else { |
9742 |
$r = $self->{uri} <=> $anotherResource; |
9743 |
} |
9744 |
|
9745 |
|
9746 |
} |
9747 |
$r} |
9748 |
, |
9749 |
fallback => 1; |
9750 |
$Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISResourceDefinition>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core', |
9751 |
{'', |
9752 |
'1', |
9753 |
'1.0', |
9754 |
'1'}, |
9755 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#perl', |
9756 |
{'', |
9757 |
'1', |
9758 |
'1.0', |
9759 |
'1'}}; |
9760 |
$Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISResourceDefinition>} = 2; |
9761 |
package Message::Util::IF::DISResourceMV; |
9762 |
our $VERSION = 20061231.0921; |
9763 |
package Message::Util::DIS::ManakaiDISResourceMV; |
9764 |
our $VERSION = 20061231.0921; |
9765 |
push our @ISA, 'Message::Util::IF::DISResourceMV'; |
9766 |
sub mv_local_name ($;$) { |
9767 |
if (@_ == 1) {my ($self) = @_; |
9768 |
my $r = ''; |
9769 |
|
9770 |
{ |
9771 |
|
9772 |
|
9773 |
{ |
9774 |
|
9775 |
local $Error::Depth = $Error::Depth + 1; |
9776 |
|
9777 |
{ |
9778 |
|
9779 |
|
9780 |
if |
9781 |
(UNIVERSAL::isa ($self->{ |
9782 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AppName' |
9783 |
}, |
9784 |
|
9785 |
'Message::Util::IF::DVQNameValue' |
9786 |
)) { |
9787 |
$r = $self->{ |
9788 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AppName' |
9789 |
}-> |
9790 |
local_name |
9791 |
; |
9792 |
} elsif (defined $self->{ |
9793 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AppName' |
9794 |
}) { |
9795 |
$r = $self->{ |
9796 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AppName' |
9797 |
}-> |
9798 |
string_value |
9799 |
; |
9800 |
} else { |
9801 |
$r = $self-> |
9802 |
local_name |
9803 |
; |
9804 |
} |
9805 |
|
9806 |
|
9807 |
|
9808 |
} |
9809 |
|
9810 |
|
9811 |
;} |
9812 |
|
9813 |
; |
9814 |
|
9815 |
|
9816 |
} |
9817 |
$r; |
9818 |
} else {my ($self) = @_; |
9819 |
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::Util::DIS::ManakaiDISResourceMV', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'mv_local_name'; |
9820 |
} |
9821 |
} |
9822 |
sub mv_prefix ($;$) { |
9823 |
if (@_ == 1) {my ($self) = @_; |
9824 |
my $r = ''; |
9825 |
|
9826 |
{ |
9827 |
|
9828 |
|
9829 |
{ |
9830 |
|
9831 |
local $Error::Depth = $Error::Depth + 1; |
9832 |
|
9833 |
{ |
9834 |
|
9835 |
|
9836 |
if |
9837 |
(UNIVERSAL::isa ($self->{ |
9838 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AppName' |
9839 |
}, |
9840 |
|
9841 |
'Message::Util::IF::DVQNameValue' |
9842 |
)) { |
9843 |
$r = $self->{ |
9844 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AppName' |
9845 |
}-> |
9846 |
prefix |
9847 |
; |
9848 |
} |
9849 |
unless (defined $r) { |
9850 |
my $nsuri = $self-> |
9851 |
mv_namespace_uri |
9852 |
; |
9853 |
if (defined $nsuri and $nsuri =~ /([A-Za-z]\w*)\W*$/) { |
9854 |
$r = $1; |
9855 |
} elsif (defined $nsuri) { |
9856 |
$r = 'ns'; |
9857 |
} |
9858 |
} |
9859 |
|
9860 |
|
9861 |
|
9862 |
} |
9863 |
|
9864 |
|
9865 |
;} |
9866 |
|
9867 |
; |
9868 |
|
9869 |
|
9870 |
} |
9871 |
$r; |
9872 |
} else {my ($self) = @_; |
9873 |
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::Util::DIS::ManakaiDISResourceMV', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'mv_prefix'; |
9874 |
} |
9875 |
} |
9876 |
sub mv_namespace_uri ($;$) { |
9877 |
if (@_ == 1) {my ($self) = @_; |
9878 |
my $r; |
9879 |
|
9880 |
{ |
9881 |
|
9882 |
|
9883 |
{ |
9884 |
|
9885 |
local $Error::Depth = $Error::Depth + 1; |
9886 |
|
9887 |
{ |
9888 |
|
9889 |
|
9890 |
if |
9891 |
(UNIVERSAL::isa ($self->{ |
9892 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AppName' |
9893 |
}, |
9894 |
|
9895 |
'Message::Util::IF::DVQNameValue' |
9896 |
)) { |
9897 |
$r = $self->{ |
9898 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AppName' |
9899 |
}-> |
9900 |
namespace_uri |
9901 |
; |
9902 |
} elsif (defined $self->{ |
9903 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--AppName' |
9904 |
}) { |
9905 |
$r = |
9906 |
undef |
9907 |
; |
9908 |
} else { |
9909 |
$r = $self-> |
9910 |
namespace_uri |
9911 |
; |
9912 |
} |
9913 |
|
9914 |
|
9915 |
|
9916 |
} |
9917 |
|
9918 |
|
9919 |
;} |
9920 |
|
9921 |
; |
9922 |
|
9923 |
|
9924 |
} |
9925 |
$r; |
9926 |
} else {my ($self) = @_; |
9927 |
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::Util::DIS::ManakaiDISResourceMV', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'mv_namespace_uri'; |
9928 |
} |
9929 |
} |
9930 |
sub mv_owner_element_resource ($;$) { |
9931 |
if (@_ == 1) {my ($self) = @_; |
9932 |
my $r; |
9933 |
|
9934 |
{ |
9935 |
|
9936 |
|
9937 |
{ |
9938 |
|
9939 |
local $Error::Depth = $Error::Depth + 1; |
9940 |
|
9941 |
{ |
9942 |
|
9943 |
|
9944 |
if |
9945 |
(exists $self->{ |
9946 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#mvOwnerElementURI' |
9947 |
}) { |
9948 |
$r = $self-> |
9949 |
database |
9950 |
|
9951 |
-> |
9952 |
get_resource |
9953 |
|
9954 |
($self->{ |
9955 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#mvOwnerElementURI' |
9956 |
}) |
9957 |
if defined $self->{ |
9958 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#mvOwnerElementURI' |
9959 |
}; |
9960 |
} else { |
9961 |
$r = $self-> |
9962 |
parent_resource |
9963 |
; |
9964 |
undef $r if $r and not $r-> |
9965 |
is_type_uri |
9966 |
( |
9967 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Markup#AnyOwnerElement' |
9968 |
); |
9969 |
$self->{ |
9970 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#mvOwnerElementURI' |
9971 |
} = $r-> |
9972 |
uri |
9973 |
if |
9974 |
$r; |
9975 |
} |
9976 |
|
9977 |
|
9978 |
|
9979 |
} |
9980 |
|
9981 |
|
9982 |
;} |
9983 |
|
9984 |
; |
9985 |
|
9986 |
|
9987 |
} |
9988 |
$r; |
9989 |
} else {my ($self) = @_; |
9990 |
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::Util::DIS::ManakaiDISResourceMV', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'mv_owner_element_resource'; |
9991 |
} |
9992 |
} |
9993 |
$Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISResourceMV>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core', |
9994 |
{'', |
9995 |
'1', |
9996 |
'1.0', |
9997 |
'1'}}; |
9998 |
$Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISResourceMV>} = 1; |
9999 |
package Message::Util::IF::DISResourceProp; |
10000 |
our $VERSION = 20061231.0921; |
10001 |
package Message::Util::DIS::ManakaiDISPropertyAccessor; |
10002 |
our $VERSION = 20061231.0921; |
10003 |
push our @ISA, 'Message::Util::IF::DISResourceProp'; |
10004 |
sub get_property_value ($$) { |
10005 |
my ($self, $propName) = @_; |
10006 |
my $r; |
10007 |
|
10008 |
{ |
10009 |
|
10010 |
if |
10011 |
($self->{$propName}) { |
10012 |
$r = $self->{$propName}->[0]; |
10013 |
} else { |
10014 |
my $pr = $self-> |
10015 |
database |
10016 |
|
10017 |
-> |
10018 |
get_resource |
10019 |
($propName); |
10020 |
A: for (grep {$pr->{aliasURI}->{$_} or $pr->{supOf}->{$_}} |
10021 |
(keys %{$pr->{aliasURI}}, keys %{$pr->{supOf}||{}})) { |
10022 |
my $v = $self->{$_}; |
10023 |
if ($v) { |
10024 |
$r = $v->[0]; |
10025 |
last A; |
10026 |
} |
10027 |
} |
10028 |
} |
10029 |
|
10030 |
|
10031 |
} |
10032 |
$r} |
10033 |
sub get_property_value_list ($$) { |
10034 |
my ($self, $propName) = @_; |
10035 |
my $r = []; |
10036 |
|
10037 |
{ |
10038 |
|
10039 |
my |
10040 |
$pr = $self-> |
10041 |
database |
10042 |
|
10043 |
-> |
10044 |
get_resource |
10045 |
($propName); |
10046 |
$r = [map {@$_} |
10047 |
grep {defined $_} |
10048 |
map {$self->{$_}} |
10049 |
grep {$pr->{aliasURI}->{$_} or $pr->{supOf}->{$_}} |
10050 |
(keys %{$pr->{aliasURI}}, keys %{$pr->{supOf}||{}})]; |
10051 |
|
10052 |
|
10053 |
} |
10054 |
$r} |
10055 |
sub get_property_boolean ($$$) { |
10056 |
my ($self, $propName, $default) = @_; |
10057 |
my $r = 0; |
10058 |
|
10059 |
{ |
10060 |
|
10061 |
if |
10062 |
(ref $self->{$propName}) { |
10063 |
$r = $self->{$propName}-> |
10064 |
value |
10065 |
? |
10066 |
1 : |
10067 |
|
10068 |
0 |
10069 |
; |
10070 |
$r = $default unless defined $r; |
10071 |
} else { |
10072 |
my $pr = $self-> |
10073 |
database |
10074 |
|
10075 |
-> |
10076 |
get_resource |
10077 |
($propName); |
10078 |
C: { |
10079 |
for (map {$self->{$_}} |
10080 |
grep {$pr->{aliasURI}->{$_} or $pr->{supOf}->{$_}} |
10081 |
(keys %{$pr->{aliasURI}}, keys %{$pr->{supOf}||{}})) { |
10082 |
if (defined $_) { |
10083 |
$r = $_-> |
10084 |
value |
10085 |
? |
10086 |
1 : |
10087 |
|
10088 |
0 |
10089 |
; |
10090 |
last C; |
10091 |
} |
10092 |
} |
10093 |
$r = $default; |
10094 |
} # C |
10095 |
} |
10096 |
|
10097 |
|
10098 |
} |
10099 |
$r} |
10100 |
sub get_property_text ($$;$) { |
10101 |
my ($self, $propName, $default) = @_; |
10102 |
my $r = ''; |
10103 |
|
10104 |
{ |
10105 |
|
10106 |
if |
10107 |
(defined $self->{$propName}) { |
10108 |
$r = $self->{$propName}-> |
10109 |
string_value |
10110 |
; |
10111 |
$r = $default unless defined $r; |
10112 |
} else { |
10113 |
my $pr = $self-> |
10114 |
database |
10115 |
|
10116 |
-> |
10117 |
get_resource |
10118 |
($propName); |
10119 |
C: { |
10120 |
for (map {$self->{$_}} |
10121 |
grep {$pr->{aliasURI}->{$_} or $pr->{supOf}->{$_}} |
10122 |
(keys %{$pr->{aliasURI}}, keys %{$pr->{supOf}||{}})) { |
10123 |
if (defined $_) { |
10124 |
$r = $_-> |
10125 |
string_value |
10126 |
; |
10127 |
last C; |
10128 |
} |
10129 |
} |
10130 |
$r = $default; |
10131 |
} # C |
10132 |
} |
10133 |
|
10134 |
|
10135 |
} |
10136 |
$r} |
10137 |
sub get_property_text_list ($$) { |
10138 |
my ($self, $propName) = @_; |
10139 |
my $r = []; |
10140 |
|
10141 |
{ |
10142 |
|
10143 |
my |
10144 |
$pr = $self-> |
10145 |
database |
10146 |
|
10147 |
-> |
10148 |
get_resource |
10149 |
($propName); |
10150 |
$r = [map {$_-> |
10151 |
string_value |
10152 |
} |
10153 |
map {@$_} |
10154 |
grep {$_} |
10155 |
map {$self->{$_}} |
10156 |
grep {$pr->{aliasURI}->{$_} or $pr->{supOf}->{$_}} |
10157 |
(keys %{$pr->{aliasURI}}, keys %{$pr->{supOf}||{}})]; |
10158 |
|
10159 |
|
10160 |
} |
10161 |
$r} |
10162 |
sub get_property_resource ($$) { |
10163 |
my ($self, $propName) = @_; |
10164 |
my $r; |
10165 |
|
10166 |
{ |
10167 |
|
10168 |
|
10169 |
{ |
10170 |
|
10171 |
local $Error::Depth = $Error::Depth + 1; |
10172 |
|
10173 |
{ |
10174 |
|
10175 |
|
10176 |
my |
10177 |
$v = $self-> |
10178 |
get_property_value |
10179 |
|
10180 |
($propName); |
10181 |
if (UNIVERSAL::isa ($v, |
10182 |
'Message::Util::IF::DVURIValue' |
10183 |
)) { |
10184 |
$r = $v-> |
10185 |
get_resource |
10186 |
|
10187 |
($self-> |
10188 |
database |
10189 |
); |
10190 |
} |
10191 |
|
10192 |
|
10193 |
|
10194 |
} |
10195 |
|
10196 |
|
10197 |
;} |
10198 |
|
10199 |
; |
10200 |
|
10201 |
|
10202 |
} |
10203 |
$r} |
10204 |
sub get_property_resource_list ($$%) { |
10205 |
my ($self, $propName, %opt) = @_; |
10206 |
my $r = []; |
10207 |
|
10208 |
{ |
10209 |
|
10210 |
|
10211 |
$r = []; |
10212 |
|
10213 |
|
10214 |
{ |
10215 |
|
10216 |
local $Error::Depth = $Error::Depth + 1; |
10217 |
|
10218 |
{ |
10219 |
|
10220 |
|
10221 |
my |
10222 |
$v = $self-> |
10223 |
get_property_value_list |
10224 |
($propName); |
10225 |
my $db = $self-> |
10226 |
database |
10227 |
; |
10228 |
for my $a (@$v) { |
10229 |
if ($a->isa ( |
10230 |
'Message::Util::IF::DVURIValue' |
10231 |
)) { |
10232 |
push @$r, $a-> |
10233 |
get_resource |
10234 |
($db); |
10235 |
} |
10236 |
if ($opt{isa_recursive}) { |
10237 |
my $b = $a-> |
10238 |
get_property |
10239 |
|
10240 |
( |
10241 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#stopISARecursive' |
10242 |
); |
10243 |
if ($b and $b-> |
10244 |
value |
10245 |
) { |
10246 |
$opt{isa_recursive} = |
10247 |
0 |
10248 |
; |
10249 |
} |
10250 |
} |
10251 |
} |
10252 |
|
10253 |
|
10254 |
|
10255 |
} |
10256 |
|
10257 |
|
10258 |
;} |
10259 |
|
10260 |
; |
10261 |
|
10262 |
if ($opt{recursive}) { |
10263 |
|
10264 |
|
10265 |
{ |
10266 |
|
10267 |
local $Error::Depth = $Error::Depth + 1; |
10268 |
|
10269 |
{ |
10270 |
|
10271 |
|
10272 |
|
10273 |
$opt{___recursive_isa_done} ||= {$self-> |
10274 |
uri |
10275 |
=> |
10276 |
1 |
10277 |
}; |
10278 |
my @p_res = @$r; |
10279 |
for my $p_res (@p_res) { |
10280 |
my $p_res_uri = $p_res-> |
10281 |
uri |
10282 |
; |
10283 |
next if $opt{___recursive_isa_done}->{$p_res_uri}; |
10284 |
$opt{___recursive_isa_done}->{$p_res_uri} = |
10285 |
1 |
10286 |
; |
10287 |
push @$r, @{$p_res-> |
10288 |
get_property_resource_list |
10289 |
|
10290 |
($propName, recursive => |
10291 |
1 |
10292 |
, |
10293 |
recursive_isa => $opt{recursive_isa}, |
10294 |
___recursive_isa_done => $opt{___recursive_isa_done})}; |
10295 |
} |
10296 |
|
10297 |
|
10298 |
|
10299 |
} |
10300 |
|
10301 |
|
10302 |
;} |
10303 |
|
10304 |
; |
10305 |
} |
10306 |
if ($opt{recursive_isa}) { |
10307 |
|
10308 |
|
10309 |
{ |
10310 |
|
10311 |
local $Error::Depth = $Error::Depth + 1; |
10312 |
|
10313 |
{ |
10314 |
|
10315 |
|
10316 |
|
10317 |
$opt{recursive_isa_prop_name} = |
10318 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ISA' |
10319 |
unless |
10320 |
defined $opt{recursive_isa_prop_name}; |
10321 |
$opt{___recursive_isa_done} ||= {$self-> |
10322 |
uri |
10323 |
=> |
10324 |
1 |
10325 |
}; |
10326 |
my @p_res = @$r; |
10327 |
for my $p_res (@p_res) { |
10328 |
my $p_res_uri = $p_res-> |
10329 |
uri |
10330 |
; |
10331 |
next if $opt{___recursive_isa_done}->{$p_res_uri}; |
10332 |
$opt{___recursive_isa_done}->{$p_res_uri} = |
10333 |
1 |
10334 |
; |
10335 |
push @$r, @{$p_res-> |
10336 |
get_property_resource_list |
10337 |
|
10338 |
($opt{recursive_isa_prop_name}, |
10339 |
recursive => |
10340 |
1 |
10341 |
, |
10342 |
___recursive_isa_done => $opt{___recursive_isa_done})}; |
10343 |
} |
10344 |
|
10345 |
|
10346 |
|
10347 |
} |
10348 |
|
10349 |
|
10350 |
;} |
10351 |
|
10352 |
; |
10353 |
} |
10354 |
if ($opt{isa_recursive}) { |
10355 |
|
10356 |
|
10357 |
{ |
10358 |
|
10359 |
local $Error::Depth = $Error::Depth + 1; |
10360 |
|
10361 |
{ |
10362 |
|
10363 |
|
10364 |
|
10365 |
$opt{isa_recursive_prop_name} = |
10366 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--ISA' |
10367 |
unless |
10368 |
defined $opt{isa_recursive_prop_name}; |
10369 |
my $self_uri = $self-> |
10370 |
uri |
10371 |
; |
10372 |
$opt{___recursive_isa_done} ||= {$self_uri => |
10373 |
1 |
10374 |
}; |
10375 |
$opt{___isa_recursive_done} ||= {$self_uri => |
10376 |
1 |
10377 |
}; |
10378 |
my @p_res = @{$self-> |
10379 |
get_property_resource_list |
10380 |
|
10381 |
($opt{isa_recursive_prop_name}, recursive_isa => |
10382 |
0 |
10383 |
, |
10384 |
recursive => |
10385 |
0 |
10386 |
, |
10387 |
)}; |
10388 |
for my $p_res (@p_res) { |
10389 |
my $p_res_uri = $p_res-> |
10390 |
uri |
10391 |
; |
10392 |
next if $opt{___isa_recursive_done}->{$p_res_uri}; |
10393 |
$opt{___isa_recursive_done}->{$p_res_uri} = |
10394 |
1 |
10395 |
; |
10396 |
push @$r, @{$p_res-> |
10397 |
get_property_resource_list |
10398 |
|
10399 |
($propName, recursive_isa => |
10400 |
0 |
10401 |
, |
10402 |
recursive => |
10403 |
0 |
10404 |
, |
10405 |
isa_recursive => |
10406 |
1 |
10407 |
, |
10408 |
___isa_recursive_done => |
10409 |
$opt{___isa_recursive_done})}; |
10410 |
} |
10411 |
|
10412 |
|
10413 |
|
10414 |
} |
10415 |
|
10416 |
|
10417 |
;} |
10418 |
|
10419 |
; |
10420 |
} |
10421 |
|
10422 |
|
10423 |
} |
10424 |
$r} |
10425 |
sub add_property_resource_list ($$$) { |
10426 |
my ($self, $propName, $res) = @_; |
10427 |
|
10428 |
{ |
10429 |
|
10430 |
if |
10431 |
($self->{$propName}) { |
10432 |
my $uriv; |
10433 |
|
10434 |
|
10435 |
{ |
10436 |
|
10437 |
|
10438 |
$uriv = |
10439 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value |
10440 |
|
10441 |
( |
10442 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI' |
10443 |
, $res->uri); |
10444 |
|
10445 |
|
10446 |
{ |
10447 |
|
10448 |
local $Error::Depth = $Error::Depth + 1; |
10449 |
|
10450 |
{ |
10451 |
|
10452 |
|
10453 |
|
10454 |
$uriv-> |
10455 |
name |
10456 |
($propName); |
10457 |
|
10458 |
|
10459 |
|
10460 |
} |
10461 |
|
10462 |
|
10463 |
;} |
10464 |
|
10465 |
; |
10466 |
|
10467 |
|
10468 |
} |
10469 |
|
10470 |
; |
10471 |
$self->{$propName}-> |
10472 |
add_item |
10473 |
($uriv); |
10474 |
} else { |
10475 |
|
10476 |
|
10477 |
{ |
10478 |
|
10479 |
|
10480 |
$self->{$propName} = |
10481 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_ordered_list |
10482 |
|
10483 |
('http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI', base_type => 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI'); |
10484 |
|
10485 |
|
10486 |
} |
10487 |
|
10488 |
; |
10489 |
my $uriv; |
10490 |
|
10491 |
|
10492 |
{ |
10493 |
|
10494 |
|
10495 |
$uriv = |
10496 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value |
10497 |
|
10498 |
( |
10499 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI' |
10500 |
, $res->uri); |
10501 |
|
10502 |
|
10503 |
{ |
10504 |
|
10505 |
local $Error::Depth = $Error::Depth + 1; |
10506 |
|
10507 |
{ |
10508 |
|
10509 |
|
10510 |
|
10511 |
$uriv-> |
10512 |
name |
10513 |
($propName); |
10514 |
|
10515 |
|
10516 |
|
10517 |
} |
10518 |
|
10519 |
|
10520 |
;} |
10521 |
|
10522 |
; |
10523 |
|
10524 |
|
10525 |
} |
10526 |
|
10527 |
; |
10528 |
$self->{$propName}-> |
10529 |
add_item |
10530 |
($uriv); |
10531 |
} |
10532 |
|
10533 |
|
10534 |
} |
10535 |
} |
10536 |
sub add_property_resource_ulist ($$$) { |
10537 |
my ($self, $propName, $res) = @_; |
10538 |
|
10539 |
{ |
10540 |
|
10541 |
if |
10542 |
($self->{$propName}) { |
10543 |
my $uriv; |
10544 |
|
10545 |
|
10546 |
{ |
10547 |
|
10548 |
|
10549 |
$uriv = |
10550 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value |
10551 |
|
10552 |
( |
10553 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI' |
10554 |
, $res->uri); |
10555 |
|
10556 |
|
10557 |
{ |
10558 |
|
10559 |
local $Error::Depth = $Error::Depth + 1; |
10560 |
|
10561 |
{ |
10562 |
|
10563 |
|
10564 |
|
10565 |
$uriv-> |
10566 |
name |
10567 |
($propName); |
10568 |
|
10569 |
|
10570 |
|
10571 |
} |
10572 |
|
10573 |
|
10574 |
;} |
10575 |
|
10576 |
; |
10577 |
|
10578 |
|
10579 |
} |
10580 |
|
10581 |
; |
10582 |
$self->{$propName}-> |
10583 |
add_item |
10584 |
($uriv); |
10585 |
} else { |
10586 |
|
10587 |
|
10588 |
{ |
10589 |
|
10590 |
|
10591 |
$self->{$propName} = |
10592 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_unordered_list |
10593 |
|
10594 |
('http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI', base_type => 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI'); |
10595 |
|
10596 |
|
10597 |
} |
10598 |
|
10599 |
; |
10600 |
my $uriv; |
10601 |
|
10602 |
|
10603 |
{ |
10604 |
|
10605 |
|
10606 |
$uriv = |
10607 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value |
10608 |
|
10609 |
( |
10610 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI' |
10611 |
, $res->uri); |
10612 |
|
10613 |
|
10614 |
{ |
10615 |
|
10616 |
local $Error::Depth = $Error::Depth + 1; |
10617 |
|
10618 |
{ |
10619 |
|
10620 |
|
10621 |
|
10622 |
$uriv-> |
10623 |
name |
10624 |
($propName); |
10625 |
|
10626 |
|
10627 |
|
10628 |
} |
10629 |
|
10630 |
|
10631 |
;} |
10632 |
|
10633 |
; |
10634 |
|
10635 |
|
10636 |
} |
10637 |
|
10638 |
; |
10639 |
$self->{$propName}-> |
10640 |
add_item |
10641 |
($uriv); |
10642 |
} |
10643 |
|
10644 |
|
10645 |
} |
10646 |
} |
10647 |
sub add_peoperty_uri_ulist ($$$) { |
10648 |
my ($self, $propName, $uri) = @_; |
10649 |
|
10650 |
{ |
10651 |
|
10652 |
|
10653 |
{ |
10654 |
|
10655 |
local $Error::Depth = $Error::Depth + 1; |
10656 |
|
10657 |
{ |
10658 |
|
10659 |
|
10660 |
if |
10661 |
($self->{$propName}) { |
10662 |
my $uriv; |
10663 |
|
10664 |
|
10665 |
{ |
10666 |
|
10667 |
|
10668 |
$uriv = |
10669 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value |
10670 |
|
10671 |
( |
10672 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI' |
10673 |
, $uri); |
10674 |
|
10675 |
|
10676 |
{ |
10677 |
|
10678 |
local $Error::Depth = $Error::Depth + 1; |
10679 |
|
10680 |
{ |
10681 |
|
10682 |
|
10683 |
|
10684 |
$uriv-> |
10685 |
name |
10686 |
($propName); |
10687 |
|
10688 |
|
10689 |
|
10690 |
} |
10691 |
|
10692 |
|
10693 |
;} |
10694 |
|
10695 |
; |
10696 |
|
10697 |
|
10698 |
} |
10699 |
|
10700 |
; |
10701 |
$self->{$propName}-> |
10702 |
add_item |
10703 |
($uriv); |
10704 |
} else { |
10705 |
|
10706 |
|
10707 |
{ |
10708 |
|
10709 |
|
10710 |
$self->{$propName} = |
10711 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_unordered_list |
10712 |
|
10713 |
('http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI', base_type => 'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI'); |
10714 |
|
10715 |
|
10716 |
} |
10717 |
|
10718 |
; |
10719 |
my $uriv; |
10720 |
|
10721 |
|
10722 |
{ |
10723 |
|
10724 |
|
10725 |
$uriv = |
10726 |
Message::Util::DIS::Value::ManakaiDISImplementationValue->create_dv_value |
10727 |
|
10728 |
( |
10729 |
'http://suika.fam.cx/~wakaba/archive/2004/dis/Core#URI' |
10730 |
, $uri); |
10731 |
|
10732 |
|
10733 |
{ |
10734 |
|
10735 |
local $Error::Depth = $Error::Depth + 1; |
10736 |
|
10737 |
{ |
10738 |
|
10739 |
|
10740 |
|
10741 |
$uriv-> |
10742 |
name |
10743 |
($propName); |
10744 |
|
10745 |
|
10746 |
|
10747 |
} |
10748 |
|
10749 |
|
10750 |
;} |
10751 |
|
10752 |
; |
10753 |
|
10754 |
|
10755 |
} |
10756 |
|
10757 |
; |
10758 |
$self->{$propName}-> |
10759 |
add_item |
10760 |
($uriv); |
10761 |
} |
10762 |
|
10763 |
|
10764 |
|
10765 |
} |
10766 |
|
10767 |
|
10768 |
;} |
10769 |
|
10770 |
; |
10771 |
|
10772 |
|
10773 |
} |
10774 |
} |
10775 |
$Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISPropertyAccessor>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core', |
10776 |
{'', |
10777 |
'1', |
10778 |
'1.0', |
10779 |
'1'}}; |
10780 |
$Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISPropertyAccessor>} = 1; |
10781 |
package Message::Util::IF::DISException; |
10782 |
our $VERSION = 20061231.0921; |
10783 |
push our @ISA, 'Message::Util::Error'; |
10784 |
|
10785 |
sub ___error_def () { |
10786 |
\%Message::Util::IF::DISException::ErrorDef |
10787 |
} |
10788 |
|
10789 |
sub HIERARCHY_REQUEST_ERR () { |
10790 |
3} |
10791 |
$Message::Util::IF::DISException::ErrorDef{'HIERARCHY_REQUEST_ERR'} = {'description', |
10792 |
'An attempt is made to break the hierarchy.', |
10793 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#code', |
10794 |
'3'}; |
10795 |
$Message::Util::IF::DISException::ErrorDef{'HIERARCHY_REQUEST_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#MERGE_ITSELF_ERR'} = {'description', |
10796 |
'An attempt is made to merge the resource <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri} );> to itself'}; |
10797 |
sub NOT_SUPPORTED_ERR () { |
10798 |
9} |
10799 |
$Message::Util::IF::DISException::ErrorDef{'NOT_SUPPORTED_ERR'} = {'description', |
10800 |
'An attempt is made to do something the implementation does not support.', |
10801 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#code', |
10802 |
'9'}; |
10803 |
$Message::Util::IF::DISException::ErrorDef{'NOT_SUPPORTED_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#UNSUPPORTED_MEDIA_TYPE_ERR'} = {'description', |
10804 |
'%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceCode}, prefix => {"}, suffix => {": } );%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#elementType}, prefix => { (Element type: <}, suffix => {>) } );Media type <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});> is not supported'}; |
10805 |
$Message::Util::IF::DISException::ErrorDef{'NOT_SUPPORTED_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#UNSUPPORTED_ELEMENT_TYPE_ERR'} = {'description', |
10806 |
'Element type "%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#elementType});" is not supported'}; |
10807 |
sub INVALID_STATE_ERR () { |
10808 |
11} |
10809 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_STATE_ERR'} = {'description', |
10810 |
'An attempt is made to use an object that is not (or no longer) usable.', |
10811 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#code', |
10812 |
'11'}; |
10813 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_STATE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_ASSOCIATED_DB_ERR'} = {'description', |
10814 |
'No <QUOTE::dis> database has been associated with this document.'}; |
10815 |
sub INVALID_SOURCE_ERR () { |
10816 |
501} |
10817 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'} = {'description', |
10818 |
'The source input is well-formed but invalid.', |
10819 |
'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#code', |
10820 |
'501'}; |
10821 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_MODULE_QNAME_ERR'} = {'description', |
10822 |
'The <Q::dis:Module> element must have its <Q::dis:QName> attribute.'}; |
10823 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_LOCAL_NAME_ERR'} = {'description', |
10824 |
'The resource does not have a local name.'}; |
10825 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#UNABLE_TO_GET_MODULE_ERR'} = {'description', |
10826 |
'Unable to get the module source of <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});>'}; |
10827 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_FOR_QNAME_ERR'} = {'description', |
10828 |
'A <Q::dis:ForDef> element must have <Q::dis:QName> attribute.'}; |
10829 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#FOR_ALREADY_DEFINED_ERR'} = {'description', |
10830 |
'<QUOTE::For> <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});> is already defined'}; |
10831 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_ALREADY_DEFINED_ERR'} = {'description', |
10832 |
'%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#moduleURI}, prefix => {Module <}, suffix => {>: }) ;Resource <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});> is already defined'}; |
10833 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#ELEMENT_NOT_ALLOWED_ERR'} = {'description', |
10834 |
'Module <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});>: Element of type <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#elementType});> is not allowed here'}; |
10835 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_REQUIRED_ATTR_ERR'} = {'description', |
10836 |
'Attribute <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#elementType});> must be specified'}; |
10837 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#FOR_NOT_DEFINED_ERR'} = {'description', |
10838 |
'<QUOTE::For> <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});> is not defined'}; |
10839 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESOURCE_NOT_DEFINED_ERR'} = {'description', |
10840 |
'%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#moduleURI}, prefix => {Module <}, suffix => {>: }) ;%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNodePath}, suffix => {: }) ;%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceCode}, prefix => {"}, suffix => {": }) ;%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#parentURI}, prefix => {(In <}, suffix => {>) }) ;Resource%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri}, prefix => { <}, suffix => {>});%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#localName}, prefix => { "}, suffix => {"}); is not defined or wrong type%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#expectedType}, prefix => { (<}, suffix => {> is expected)});'}; |
10841 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_SOURCE_NODE_ERR'} = {'description', |
10842 |
'A resource does not have associated node in the source tree.'}; |
10843 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#RESERVED_PERL_METHOD_NAME_ERR'} = {'description', |
10844 |
'A reserved Perl method name is used.'}; |
10845 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_DIS_TYPE_ERR'} = {'description', |
10846 |
'Resource "%t (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});" has no "dis:Type" attribute'}; |
10847 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_METHOD_RETURN_ERR'} = {'description', |
10848 |
'Method "%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#localName});" does not have "Return" child'}; |
10849 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_ATTR_GET_ERR'} = {'description', |
10850 |
'A <Q::DISLang:Attribute> resource does not have any <Q::DISLang:AttributeGet> child.'}; |
10851 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#INTERFACE_CLASS_METHOD_ERR'} = {'description', |
10852 |
'An attempt is made to call a static (class) method from an interface.'}; |
10853 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#BROKEN_PARAM_SPEC_ERR'} = {'description', |
10854 |
'%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceCode}, prefix => {"}, suffix => {": });Broken parameter specification'}; |
10855 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_PREPROCESS_NO_ELEMENT_TYPE_ERR'} = {'description', |
10856 |
'%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceCode}, prefix => {"}, suffix => {": });Element type name is not specified'}; |
10857 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_PERL_PACKAGE_NAME_ERR'} = {'description', |
10858 |
'%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri}, prefix => {<}, suffix => {>: });Perl package name is not defined'}; |
10859 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_PREPROCESS_NO_EXCEPTION_TYPE_ERR'} = {'description', |
10860 |
'An exception type specification is required.'}; |
10861 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_PREPROCESS_NO_CODE_NAME_ERR'} = {'description', |
10862 |
'A code name specification is required.'}; |
10863 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_CODE_NOT_DEFINED_ERR'} = {'description', |
10864 |
'Resource%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri}, prefix => { "}, suffix => {"}); has no Perl code definition'}; |
10865 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_PREPROCESS_NO_METHOD_ERR'} = {'description', |
10866 |
'A preprocessing instruction which is only allowed in method definitions is used in a code which is not a method.'}; |
10867 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_PREPROCESS_NO_FOR_ERR'} = {'description', |
10868 |
'A <QUOTE::for> specification is required.'}; |
10869 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_PREPROCESS_NO_ASSERT_TYPE_ERR'} = {'description', |
10870 |
'An assertion type specification is required.'}; |
10871 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_PREPROCESS_BLOCK_NOT_ALLOWED_ERR'} = {'description', |
10872 |
'A preprocessing instruction block occurred with element type which does not allow it.'}; |
10873 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NON_NAMED_PARAMETER_AFTER_NAMED_ERR'} = {'description', |
10874 |
'A non-named method parameter following any named method parameter is occurred.'}; |
10875 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#DISPERL_NO_VALUE_ALLOWED_ERR'} = {'description', |
10876 |
'An element node have a value but the definition of that element type does not allow it.'}; |
10877 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_CONST_VALUE_ERR'} = {'description', |
10878 |
'The source element node for a constant value resource does not have <Q::dis:Value> attribute.'}; |
10879 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_ATTR_SET_ERR'} = {'description', |
10880 |
'An attribute setter is referred but the attribute does not define any setter.'}; |
10881 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_SUBROUTINE_ALREADY_DEFINED_ERR'} = {'description', |
10882 |
'A resource defines a Perl subroutine whose name is same as another subroutine.'}; |
10883 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_OPERATOR_ALREADY_OVERLOADED_ERR'} = {'description', |
10884 |
'A resource is defined to overload a Perl operator which is already overloaded by another resource.'}; |
10885 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_UNUSED_SUBROUTINE_ERR'} = {'description', |
10886 |
'A resource defines a Perl subroutine but it is not used.'}; |
10887 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_LICENSE_ATTR_ERR'} = {'description', |
10888 |
'The <Q::dis:Module> element does not have the <Q::dis:License> attribute.'}; |
10889 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#UNSUPPORTED_ROLE_ERR'} = {'description', |
10890 |
'Role <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});> is not supported'}; |
10891 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_REFLECT_GET_DEFINED_ERR'} = {'description', |
10892 |
'An attribute is defined to reflect an element attribute but no reflecting attribute getter template is defined.'}; |
10893 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_REFLECT_SET_DEFINED_ERR'} = {'description', |
10894 |
'An attribute is defined to reflect an element attribute but no reflecting attribute setter template is defined.'}; |
10895 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_END_TAG_ERR'} = {'description', |
10896 |
'End tag for element "%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#elementType});" is required%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceCode}, prefix => { (}, suffix => {)});'}; |
10897 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_RDF_TYPE_ERR'} = {'description', |
10898 |
'Resource%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri}, prefix => { "}, suffix => {"}); does not have "rdf:type" attribute'}; |
10899 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#PERL_HASH_KEY_ALREADY_DEFINED_ERR'} = {'description', |
10900 |
'<%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});>: Hash key "%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#hashKeyName});" in <%p (mame => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#hashKeyScope});> is already defined for <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#anotherURI});>'}; |
10901 |
$Message::Util::IF::DISException::ErrorDef{'INVALID_SOURCE_ERR'}->{'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype'}->{'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#NO_EXCEPTION_CLASS_ERR'} = {'description', |
10902 |
'Exception interface <%p (name => {http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri});>: There is no class that implements this interface'}; |
10903 |
package Message::Util::DIS::ManakaiDISException; |
10904 |
our $VERSION = 20061231.0921; |
10905 |
push our @ISA, 'Message::Util::Error::DOMException::Exception', |
10906 |
'Message::Util::IF::DISException'; |
10907 |
sub text ($;$) { |
10908 |
if (@_ == 1) {my ($self) = @_; |
10909 |
my $r = ''; |
10910 |
|
10911 |
{ |
10912 |
|
10913 |
|
10914 |
$r = $self->SUPER::text; |
10915 |
if (defined $self->{ |
10916 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' |
10917 |
}) { |
10918 |
$r = '<' . $self->{ |
10919 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#uri' |
10920 |
} . '>: ' . $r; |
10921 |
} |
10922 |
if (defined $self->{ |
10923 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' |
10924 |
}) { |
10925 |
$r = 'Node ' . $self->{ |
10926 |
'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#sourceNode' |
10927 |
}-> |
10928 |
node_path |
10929 |
|
10930 |
. ': ' . $r; |
10931 |
} |
10932 |
|
10933 |
|
10934 |
} |
10935 |
$r; |
10936 |
} else {my ($self) = @_; |
10937 |
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::Util::DIS::ManakaiDISException', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'text'; |
10938 |
} |
10939 |
} |
10940 |
$Message::DOM::DOMFeature::ClassInfo->{q<Message::Util::DIS::ManakaiDISException>}->{has_feature} = {'http://suika.fam.cx/~wakaba/archive/2005/manakai/util/dis#core', |
10941 |
{'', |
10942 |
'1', |
10943 |
'1.0', |
10944 |
'1'}}; |
10945 |
$Message::DOM::ClassPoint{q<Message::Util::DIS::ManakaiDISException>} = 1; |
10946 |
for ($Message::DOM::IF::DOMImplementation::, $Message::Markup::IF::SWCFGParser::, $Message::Util::IF::DISAnyResourcePerl::, $Message::Util::IF::DISModulePerl::, $Message::Util::IF::DISResourcePerlModule::){} |
10947 |
## License: <http://suika.fam.cx/~wakaba/archive/2004/8/18/license#Perl+MPL> |
10948 |
1; |