/[suikacvs]/messaging/manakai/lib/Message/Util/PerlCode.dis
Suika

Contents of /messaging/manakai/lib/Message/Util/PerlCode.dis

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (hide annotations) (download)
Thu Mar 3 11:19:08 2005 UTC (20 years, 4 months ago) by wakaba
Branch: MAIN
Changes since 1.1: +17 -2 lines
Some methods reconstructed from lib/manakai/dis.pl implemented

1 wakaba 1.1 Module:
2     @QName:
3     Util:PerlCode
4     @FullName:
5     @@lang: en
6     @@@:
7     Perl Code Constructor
8     @Namespace:
9     http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/PerlCode#
10    
11     @Description:
12     @@lang:en
13     @@@:
14     This module provides an object-oriented interface to construct
15     Perl code.
16    
17     @Author:
18     @@FullName: Wakaba
19     @@Mail: w@suika.fam.cx
20     @License:
21     @@@:
22     license:Perl+MPL
23     @@Original:
24     @@@FullName:
25     manakai <CODE::lib/manakai/genlib.pl>
26     @@@Year:2004
27     @@@Author:
28     @@@@FullName:Wakaba
29     @@@@Mail:w@suika.fam.cx
30     @Date:
31     @@@:
32 wakaba 1.2 $Date: 2005/03/03 06:26:16 $
33 wakaba 1.1 @@ContentType:
34     dis:Date.RCS
35    
36     @Require:
37     @@Module:
38     @@@Name: ManakaiNode
39     @@@WithFor:
40     ManakaiDOM:Perl
41     @@Module:
42     @@@Name: DOMBoot
43     @@@WithFor:
44     ManakaiDOM:ManakaiDOMLatest
45     @@Module:
46     @@@Name: DOMMetaImpl
47     @@@WithFor:
48     ManakaiDOM:ManakaiDOMLatest
49    
50     @DefaultFor:
51     ManakaiDOM:Perl
52    
53     Namespace:
54     @DIS:
55     http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/DIS#
56     @dis:
57     http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--
58     @dis2pm:
59     http://suika.fam.cx/~wakaba/archive/2004/11/8/dis2pm#
60     @DISlib:
61     http://suika.fam.cx/~wakaba/archive/2004/dis/
62     @DOMCore:
63     http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#
64     @DOMLS:
65     http://suika.fam.cx/~wakaba/archive/2004/dom/ls#
66     @DOMMain:
67     http://suika.fam.cx/~wakaba/archive/2004/dom/main#
68     @infoset:
69     http://www.w3.org/2001/04/infoset#
70     @lang:
71     http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#
72     @license:
73     http://suika.fam.cx/~wakaba/archive/2004/8/18/license#
74     @ManakaiDOM:
75     http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#
76     @Markup:
77     http://suika.fam.cx/~wakaba/archive/2005/manakai/Markup#
78     @MDOMX:
79     http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#
80     @owl:
81     http://www.w3.org/2002/07/owl#
82     @pc:
83     http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/PerlCode#
84     @Perl:
85     http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#Perl--
86     @rdf:
87     http://www.w3.org/1999/02/22-rdf-syntax-ns#
88     @rdfs:
89     http://www.w3.org/2000/01/rdf-schema#
90     @swcfg21:
91     http://suika.fam.cx/~wakaba/archive/2005/swcfg21#
92     @TreeCore:\
93     @Util:
94     http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/
95    
96     ## -- Features
97    
98     ElementTypeBinding:
99     @Name: FeatureDef
100     @ElementType:
101     dis:ResourceDef
102     @ShadowContent:
103     @@rdf:type:
104     DOMMain:DOMFeature
105     @@AliasFor:
106     @@@@:
107     ::ManakaiDOM:all
108     @@@For:
109     !=ManakaiDOM:all
110    
111     ElementTypeBinding:
112     @Name: FeatureVerDef
113     @ElementType:
114     dis:ResourceDef
115     @ShadowContent:
116     @@rdf:type:
117     DOMMain:DOMFeature
118    
119     ElementTypeBinding:
120     @Name: featureQName
121     @ElementType:
122     dis:AppName
123     @ShadowContent:
124     @@ContentType:
125     dis:TypeQName
126    
127     FeatureDef:
128     @QName: CoreFeature
129     @featureQName:
130     Util:PerlCode
131     @FeatureVerDef:
132     @@QName: CoreFeature10
133     @@Version: 1.0
134     @@ISA: CoreFeature
135     @@FullName:
136     @@@lang:en
137     @@@@:
138     Perl Code Constructor, version 1.0
139     @@Description:
140     @@@lang:en
141     @@@@:
142     Perl Code Constructor, version 1.0.
143    
144     ## -- Classes
145    
146     ClsDef:
147     @ClsQName: ManakaiPerlCodeFragment
148     @ClsISA:
149     ManakaiDOM:ManakaiDOMNodeReference::ManakaiDOM:Perl
150     @enDesc:
151     A class on which another Perl code classes are constructed based.
152    
153     @IntMethod:
154     @@Operator:
155     @@@@:
156     ManakaiDOM:MUErrorHandler
157     @@@ContentType:
158     dis:TypeQName
159     @@Description:
160     @@@lang:en
161     @@@@:
162     This method is a generic error handler; all manakai exceptions
163     and warnings associated to an object are once reported to this method
164     and then delivered to appropriate entities.
165     \
166     If the error is an exception (such as <X::DOMCore:DOMException> or
167     <X::ManakaiDOM:ManakaiDOMImplementationException>), it is
168     simply thrown. If the error is only a warning, it is reported
169     via the <IF::DOMCore:DOMError> interface.
170     \
171     See <PerlModule::Message::Util::Error> documentation for more
172     information on the error reporting mechanism.
173     \
174     {NOTE:: This kind of methods are named as <Perl::___report_error>
175     in the convention of <PerlModule::Message::Util::Error>.
176     \
177     }
178     @@Param:
179     @@@Name:err
180     @@@Type:
181     ManakaiDOM:ManakaiDOMExceptionOrWarning::ManakaiDOM:Perl
182     @@@Description:
183     @@@@lang:en
184     @@@@@:
185     An exception object that describes what kind of error it is
186     and how it should be recovered.
187     \
188     {NOTE:: Exception objects in manakai implementation
189     inherit the class <PerlModule::Message::Util::Error>,
190     that in turn inherits <PerlModule::Error>.
191     \
192     }
193     @@Return:
194     @@@PerlDef:
195     if ($err->isa (<ClassName::ManakaiDOM:ManakaiDOMException
196     ::ManakaiDOM:Perl>)) {
197     $err->throw;
198     } else {
199     \## TODO: Implement warning reporting
200     warn $err->stringify;
201     }
202    
203     @Attr:
204     @@Name: parentNode
205     @@enDesc:
206     The parent construction of this object.
207     @@Get:
208     @@@Type: ManakaiPerlCodeFragment
209     @@@PerlDef:
210     $r = $self->{<Q::TreeCore:node>}->{<Q::pc:parent>};
211     $r = $r-><M::ManakaiDOM:ManakaiDOMNodeObject
212     ::ManakaiDOM:Perl.newReference>
213     (<ClassName::ManakaiPerlSub>) if $r;
214     ##PerlCodeFragment
215    
216     ClsDef:
217     @ClsQName: ManakaiPerlFile
218     @ClsISA: ManakaiPerlCodeFragment
219     @enDesc:
220     Perl source code files.
221    
222     @IntMethod:
223     @@Name:newObject
224     @@ManakaiDOM:isStatic:1
225     @@Description:
226     @@@lang:en
227     @@@@:
228     Creates a new instance object for <Class::ManakaiPerlFile>.
229     @@Return:
230     @@@Type:
231     ManakaiDOM:ManakaiDOMNodeObject::ManakaiDOM:Perl
232     @@@Description:
233     @@@@lang:en
234     @@@@@:
235     The newly created node object.
236     @@@PerlDef:
237     @@@@@:
238     my $node = $r = <ClassM::ManakaiDOM:ManakaiDOMNodeObject
239     ::ManakaiDOM:Perl.new>;
240     push @{$node->{<Q::TreeCore:subnode>}}, <Q::pc:childNodes>;
241     $node->{<Q::pc:childNodes>} = [];
242     $node->{<Q::pc:sourceFile>} = '';
243     $node->{<Q::pc:sourceModule>} = '';
244     $node->{<Q::pc:sourceFor>} = '';
245     $node->{<Q::pc:currentPackage>} = 'main';
246     $node->{<Q::pc:currentChunk>} = 0;
247     @@@@ImplNote:
248     @@@@@lang:en
249     @@@@@@:
250     Properties: <Q::pc:sourceFile>,
251     <Q::pc:sourceModule>, <Q::pc:sourceFor>, <Q::childNodes>,
252     <Q::pc:currentPackage>, <Q::pc:currentChunk>.
253    
254     @Method:
255     @@Name: appendNewPackage
256     @@enDesc:
257     Appends a new package scope block.
258     @@Param:
259     @@@Name: packageName
260     @@@Type:
261     Perl:package-name::ManakaiDOM:all
262     @@@enDesc:
263     The fully-qualified name of the package to create.
264     @@Return:
265     @@@Type: ManakaiPerlPackageScope
266     @@@enDesc:
267     The newly created package scope object.
268     @@@PerlDef:
269     $r = <ClassM::ManakaiPerlPackageScope.newObject>;
270     $r->{<Q::pc:packageName>} = $packageName;
271     $self->{<Q::TreeCore:node>}
272     -><M::ManakaiDOM:ManakaiDOMNodeObject::ManakaiDOM:Perl
273     .importTree> ($r);
274     push @{$self->{<Q::TreeCore:node>}->{<Q::pc:childNodes>}}, $r;
275     $r->{<Q::pc:parent>} = $self->{<Q::TreeCore:node>};
276     $r = $r-><M::ManakaiDOM:ManakaiDOMNodeObject
277     ::ManakaiDOM:Perl.newReference>
278     (<ClassName::ManakaiPerlPackageScope>);
279    
280    
281     @Method:
282     @@Name: getFirstPackage
283     @@enDesc:
284     Gets the first package scope block of a name.
285     @@Param:
286     @@@Name: packageName
287     @@@@Type:
288     Perl:package-name::ManakaiDOM:all
289     @@@@enDesc:
290     The fully-qualified name of the package to get.
291     @@NamedParam:
292     @@@Name: makeNewPackage
293     @@@Type:
294     DOMMain:boolean
295     @@@enDesc:
296     Whether a new package scope object should be created if
297     no package of <P::packageName> found.
298     @@@TrueCase:
299     @@@@enDesc:
300     Makes a new object if not found.
301     @@@FalseCase:
302     @@@@enDesc:
303     Don't make a new object.
304     @@Return:
305     @@@Type: ManakaiPerlPackageScope
306     @@@enDesc:
307     The first package scope object whose name is equal to
308     <P::packageName>.
309     @@@nullCase:
310     @@@@enDesc:
311     There is no <P::packageName> package object and
312     the <P::makeNewPackage> parameter is set to <DOM::false>.
313     @@@PerlDef:
314     for my $cn (@{$self->{<Q::TreeCore:node>}->{<Q::pc:childNodes>}}) {
315     if ($cn->{<Q::pc:packageName>} eq $packageName) {
316     $r = $cn;
317     last;
318     }
319     }
320     if ($r) {
321     $r = $r-><M::ManakaiDOM:ManakaiDOMNodeObject
322     ::ManakaiDOM:Perl.newReference>
323     (<ClassName::ManakaiPerlPackageScope>);
324     } elsif ($makeNewPackage) {
325     __DEEP{
326     $r = $self-><M::ManakaiPerlFile.appendNewPackage> ($packageName);
327     }__;
328     }
329    
330     @Method:
331     @@Name: getLastPackage
332     @@enDesc:
333     Gets the last package scope block of a name.
334     @@Param:
335     @@@Name: packageName
336     @@@@Type:
337     Perl:package-name::ManakaiDOM:all
338     @@@@enDesc:
339     The fully-qualified name of the package to get.
340     @@NamedParam:
341     @@@Name: makeNewPackage
342     @@@Type:
343     DOMMain:boolean
344     @@@enDesc:
345     Whether a new package scope object should be created if
346     no package of <P::packageName> found.
347     @@@TrueCase:
348     @@@@enDesc:
349     Makes a new object if not found.
350     @@@FalseCase:
351     @@@@enDesc:
352     Don't make a new object.
353     @@Return:
354     @@@Type: ManakaiPerlPackageScope
355     @@@enDesc:
356     The last package scope object whose name is equal to
357     <P::packageName>.
358     @@@nullCase:
359     @@@@enDesc:
360     There is no <P::packageName> package object and
361     the <P::makeNewPackage> parameter is set to <DOM::false>.
362     @@@PerlDef:
363     for my $cn (reverse @{$self->{<Q::TreeCore:node>}
364     ->{<Q::pc:childNodes>}}) {
365     if ($cn->{<Q::pc:packageName>} eq $packageName) {
366     $r = $cn;
367     last;
368     }
369     }
370     if ($r) {
371     $r = $r-><M::ManakaiDOM:ManakaiDOMNodeObject
372     ::ManakaiDOM:Perl.newReference>
373     (<ClassName::ManakaiPerlPackageScope>);
374     } elsif ($makeNewPackage) {
375     __DEEP{
376     $r = $self-><M::ManakaiPerlFile.appendNewPackage> ($packageName);
377     }__;
378     }
379    
380     @Attr:
381     @@Name: length
382     @@enDesc:
383     The number of child code fragments.
384     @@Type:
385     DOMMain:unsigned-long
386     @@Get:
387     @@@PerlDef:
388     $r = @{$self->{<Q::TreeCore:childNodes>}->{<Q::pc:childNodes>}};
389    
390     @Attr:
391     @@Name: sourceFile
392     @@enDesc:
393     The file name of the source file from which this
394     Perl code is primary generated.
395     @@Get:
396     @@@Type:
397     DISLang:String
398     @@@disDef:
399     @@@@GetProp: sourceFile
400     @@Set:
401     @@@Type:
402     DISLang:String
403     @@@disDef:
404     @@@@SetProp: sourceFile
405    
406     @Attr:
407     @@Name: sourceModule
408     @@enDesc:
409     The name URI reference of the source module that this package defines.
410     @@Get:
411     @@@Type:
412     DISLang:String
413     @@@disDef:
414     @@@@GetProp: sourceModule
415     @@Set:
416     @@@Type:
417     DISLang:String
418     @@@disDef:
419     @@@@SetProp: sourceModule
420    
421     @Attr:
422     @@Name: sourceFor
423     @@enDesc:
424     The URI reference of the source module <QUOTE::for> for which this
425     package is.
426     @@Get:
427     @@@Type:
428     DISLang:String
429     @@@disDef:
430     @@@@GetProp: sourceFor
431     @@Set:
432     @@@Type:
433     DISLang:String
434     @@@disDef:
435     @@@@SetProp: sourceFor
436    
437     @ToStringMethod:
438     @@Return:
439     @@@Type:
440     DISLang:String
441     @@@enDesc:
442     The Perl code generated.
443     @@@PerlDef:
444     __DEEP{
445     my $node = $self->{<Q::TreeCore:node>};
446     ## -- Header
447     $r = qq<#!/usr/bin/perl \n>;
448     $r .= <ClassM::ManakaiPerlCodeImplementation.perlComment>
449     (q<This file is automatically generated>);
450     $r .= <ClassM::ManakaiPerlCodeImplementation.perlComment>
451     (q< at >.<ClassM::ManakaiPerlCodeImplementation
452     .rfc3339DateTime> (time).q<,>);
453     $r .= <ClassM::ManakaiPerlCodeImplementation.perlComment>
454     (q< from file ">.$node->{<Q::sourceFile>}.q<",>);
455     $r .= <ClassM::ManakaiPerlCodeImplementation.perlComment>
456     (q[ module <].$node->{<Q::sourceModule>}.q[>,]);
457     $r .= <ClassM::ManakaiPerlCodeImplementation.perlComment>
458     (q[ for <].$node->{<Q::sourceFor>}.q[>.]);
459     $r .= <ClassM::ManakaiPerlCodeImplementation.perlComment>
460     (q<Don't edit by hand!>);
461     $r .= qq<use strict;\n>;
462     $self-><AS::ManakaiPerlFile.currentPackage> ('main');
463     $self-><AS::ManakaiPerlFile.currentChunk> (0);
464    
465     ## -- Packages
466     my $pack = {};
467     for my $sp (@{$node->{<Q::pc:childNodes>}}) {
468     my $spe = $sp-><M::ManakaiDOM:ManakaiDOMNodeObject
469     ::ManakaiDOM:Perl.newReference>
470     (<ClassName::ManakaiPerlPackageScope>);
471     $r .= $spe->stringify;
472     for my $ipack (keys %{$sp->{<Q::dis:Implement>}}) {
473     $pack->{$ipack} ||= true; # not defined
474     }
475     $pack->{$sp->{<Q::pc:packageName>}} = []; # defined
476     }
477    
478     ## -- Enables interface packages
479     $r .= q<for (>. join (', ',
480     map {'$' . $_ . '::'}
481     grep {not ref $pack->{$_} and
482     $pack->{$_}} keys %$pack) . qq<){}\n>;
483    
484     ## -- Footer
485     $r .= <ClassM::ManakaiPerlCodeImplementation.perlComment>
486 wakaba 1.2 (q[License: <].$node->{<Q::dis:License>}.qq[>\n]);
487 wakaba 1.1 $r .= qq<1;\n>;
488     }__;
489    
490     @Attr:
491     @@Name: currentPackage
492     @@enDesc:
493     The current Perl package (used in stringify method).
494     @@Type:
495     Perl:package-name::ManakaiDOM:all
496     @@Get:
497     @@@disDef:
498     @@@@GetProp: currentPackage
499     @@Set:
500     @@@disDef:
501     @@@@SetProp: currentPackage
502    
503     @Attr:
504     @@Name: currentChunk
505     @@enDesc:
506     The current code chunk (used in stringify method).
507     @@Type:
508     DOMMain:unsigned-long::ManakaiDOM:all
509     @@Get:
510     @@@disDef:
511     @@@@GetProp: currentChunk
512     @@Set:
513     @@@disDef:
514     @@@@SetProp: currentChunk
515 wakaba 1.2
516     @Attr:
517     @@Name: licenseURI
518     @@enDesc:
519     The license term URI reference for this code.
520     @@Type:
521     DISLang:String::ManakaiDOM:all
522     @@Get:
523     @@@disDef:
524     @@@@GetProp:
525     dis:License
526     @@Set:
527     @@@disDef:
528     @@@@SetProp:
529     dis:License
530 wakaba 1.1 ##PerlFile
531    
532     PropDef:
533     @QName: sourceModule
534     @enDesc:
535     The soruce module name URI reference.
536    
537     PropDef:
538     @QName: sourceFor
539     @enDesc:
540     The source module <QUOTE::for> URI reference.
541    
542     PropDef:
543     @QName: currentPackage
544     @enDesc:
545     The current Perl package name (used for stringify).
546    
547     PropDef:
548     @QName: currentChunk
549     @enDesc:
550     The current code chunk (used for stringify).
551    
552     ClsDef:
553     @ClsQName: ManakaiPerlPackageScope
554     @ClsISA: ManakaiPerlCodeFragment
555    
556     @Attr:
557     @@Name: packageName
558     @@Type:
559     Perl:package-name
560     @@enDesc:
561     The fully-qualified package name.
562     @@Get:
563     @@@disDef:
564     @@@@GetProp: packageName
565    
566     @IntMethod:
567     @@Name:newObject
568     @@ManakaiDOM:isStatic:1
569     @@Description:
570     @@@lang:en
571     @@@@:
572     Creates a new instance object for <Class::ManakaiPerlPackageScope>.
573     @@Return:
574     @@@Type:
575     ManakaiDOM:ManakaiDOMNodeObject::ManakaiDOM:Perl
576     @@@Description:
577     @@@@lang:en
578     @@@@@:
579     The newly created node object.
580     @@@PerlDef:
581     @@@@@:
582     my $node = $r = <ClassM::ManakaiDOM:ManakaiDOMNodeObject
583     ::ManakaiDOM:Perl.new>;
584     push @{$node->{<Q::TreeCore:subnode2>}}, <Q::pc:sub>;
585     push @{$node->{<Q::TreeCore:origin>}}, <Q::pc:parent>;
586     $node->{<Q::pc:sub>} = {};
587     $node->{<Q::dis:ISA>} = [];
588     $node->{<Q::dis:Implement>} = {};
589     @@@@ImplNote:
590     @@@@@lang:en
591     @@@@@@:
592     Optional properties: none.
593    
594     @Method:
595     @@Name: getSub
596     @@enDesc:
597     Gets a subroutine.
598     @@Param:
599     @@@Name: subName
600     @@@Type:
601     DISPerl:SubName::ManakaiDOM:all
602     @@@enDesc:
603     The name of subroutine to get.
604     @@NamedParam:
605     @@@Name: makeNewNode
606     @@@Type:
607     DOMMain:boolean
608     @@@enDesc:
609     Whether a new subroutine object should be created,
610     if it is not exist, or not.
611     @@Return:
612     @@@Type: ManakaiPerlSub
613     @@@enDesc:
614     The subroutine object.
615     @@@PerlDef:
616     if ($self->{<Q::TreeCore:node>}->{<Q::pc:sub>}->{$subName}) {
617     $r = $self->{<Q::TreeCore:node>}->{<Q::pc:sub>}->{$subName};
618     } elsif ($makeNewNode) {
619     $r = $self->{<Q::TreeCore:node>}->{<Q::pc:sub>}->{$subName}
620     = <ClassM::ManakaiPerlSub.newObject>;
621     $self->{<Q::TreeCore:node>}
622     -><M::ManakaiDOM:ManakaiDOMNodeObject
623     ::ManakaiDOM:Perl.importTree> ($r);
624     $r->{<Q::pc:parent>} = $self->{<Q::TreeCore:node>};
625     $r->{<Q::pc:localName>} = $subName;
626     }
627     $r = $r-><M::ManakaiDOM:ManakaiDOMNodeObject
628     ::ManakaiDOM:Perl.newReference>
629     (<ClassName::ManakaiPerlSub>) if $r;
630    
631     @Attr:
632     @@Name: length
633     @@enDesc:
634     The number of child code fragments.
635     @@Type:
636     DOMMain:unsigned-long
637     @@Get:
638     @@@PerlDef:
639     $r = keys %{$self->{<Q::TreeCore:childNodes>}->{<Q::pc:sub>}};
640    
641     @Method:
642     @@Name: addIsaPackage
643     @@enDesc:
644     Adds a class package that this class inherits.
645     @@Param:
646     @@@Name: packageName
647     @@@Type:
648     Perl:package-name::ManakaiDOM:all
649     @@@enDesc:
650     The name of package to add.
651     @@Return:
652     @@@PerlDef:
653     push @{$self->{<Q::TreeCore:node>}->{<Q::dis:ISA>}}, $packageName;
654    
655     @Method:
656     @@Name: addImplementPackage
657     @@enDesc:
658     Adds a interface package that this class implements.
659     @@Param:
660     @@@Name: packageName
661     @@@Type:
662     Perl:package-name::ManakaiDOM:all
663     @@@enDesc:
664     The name of package to add.
665     @@Return:
666     @@@PerlDef:
667     $self->{<Q::TreeCore:node>}->{<Q::dis:Implement>}->{$packageName} = true;
668    
669     @ToStringMethod:
670     @@Return:
671     @@@Type:
672     DISLang:String
673     @@@enDesc:
674     Perl code.
675     @@@PerlDef:
676     my $file = $self-><AG::ManakaiPerlCodeFragment.parentNode>;
677     my $node = $self->{<Q::TreeCore:node>};
678     my $pn = $node->{<Q::pc:packageName>};
679     $r .= q<package > . $pn . ";\n";
680     __DEEP{
681     $file-><AS::ManakaiPerlFile.currentPackage> ($pn);
682     $r .= 'our $VERSION = '.
683     <ClassM::ManakaiPerlCodeImplementation.versionDateTime> (time).
684     ";\n";
685     }__;
686     my @isa = (@{$node->{<Q::dis:ISA>}},
687     sort keys %{$node->{<Q::dis:Implement>}});
688     if (@isa) {
689     $r .= 'push our @ISA, ' .
690     <ClassM::ManakaiPerlCodeImplementation.perlList> (\@isa) .
691     ";\n";
692     }
693     ##PerlPackageScope
694    
695     ClsDef:
696     @ClsQName: ManakaiPerlSub
697     @ClsISA: ManakaiPerlCodeFragment
698     @enDesc:
699     Perl subroutines.
700    
701     @IntMethod:
702     @@Name:newObject
703     @@ManakaiDOM:isStatic:1
704     @@Description:
705     @@@lang:en
706     @@@@:
707     Creates a new instance object for <Class::ManakaiPerlSub>.
708     @@Return:
709     @@@Type:
710     ManakaiDOM:ManakaiDOMNodeObject::ManakaiDOM:Perl
711     @@@Description:
712     @@@@lang:en
713     @@@@@:
714     The newly created node object.
715     @@@PerlDef:
716     @@@@@:
717     my $node = $r = <ClassM::ManakaiDOM:ManakaiDOMNodeObject
718     ::ManakaiDOM:Perl.new>;
719     push @{$node->{<Q::TreeCore:subnode>}}, <Q::pc:childNodes>;
720     push @{$node->{<Q::TreeCore:origin>}}, <Q::pc:parent>;
721     $node->{<Q::pc:childNodes>} = [];
722     $node->{<Q::pc:sourceLine>} = 0;
723     @@@@ImplNote:
724     @@@@@lang:en
725     @@@@@@:
726     Optional properties: <Q::pc:localName>,
727     <Q::pc:sourceFile>, <Q::pc:sourceLine>.
728    
729     @Attr:
730     @@Name: length
731     @@enDesc:
732     The number of child code fragments.
733     @@Type:
734     DOMMain:unsigned-long
735     @@Get:
736     @@@PerlDef:
737     $r = @{$self->{<Q::TreeCore:childNodes>}->{<Q::pc:childNodes>}};
738    
739     @Attr:
740     @@Name: name
741     @@enDesc:
742     The name of this subroutine.
743     @@Type:
744     DISPerl:SubName
745     @@Get:
746     @@@disDef:
747     @@@@GetProp: localName
748    
749     @Attr:
750     @@Name: prototype
751     @@enDesc:
752     The prototype of this subroutine.
753     @@Type:
754     DISPerl:SubPrototype
755     @@Get:
756     @@@disDef:
757     @@@@GetProp: prototype
758     @@@nullCase:
759     @@@@enDesc:
760     No prototype is set.
761     @@Set:
762     @@@disDef:
763     @@@@SetProp: prototype
764     @@@nullCase:
765     @@@@enDesc:
766     No prototype declaration.
767    
768     @Attr:
769     @@Name: currentSourceFile
770     @@enDesc:
771     The current source file name that is referred when
772     a code fragment is added.
773     @@Type:
774     DISLang:String
775     @@Get:
776     @@@nullCase:
777     @@@@enDesc: No source file name is set.
778     @@@disDef:
779     @@@@GetProp: sourceFile
780     @@Set:
781     @@@nullCase:
782     @@@@enDesc: No (or unknown) source file.
783     @@@disDef:
784     @@@@SetProp: sourceFile
785    
786     @Attr:
787     @@Name: currentSourceLine
788     @@enDesc:
789     The current line number in source file that is referred when
790     a code fragment is added.
791     @@Type:
792     DOMMain:unsigned-long
793     @@Get:
794     @@@disDef:
795     @@@@GetProp: sourceLine
796     @@Set:
797     @@@disDef:
798     @@@@SetProp: sourceLine
799    
800     @Method:
801     @@Name: appendCode
802     @@enDesc:
803     Appends an unparsed Perl code fragment.
804     @@Param:
805     @@@Name: codeArg
806     @@@Type:
807     lang:Perl::ManakaiDOM:all
808     @@@enDesc:
809     An unparsed Perl code fragment.
810     @@Return:
811     @@@Type: ManakaiPerlUnparsedCode
812     @@@enDesc:
813     The newly created Perl code object.
814     @@@PerlDef:
815     $r = <ClassM::ManakaiPerlUnparsedCode.newObject>;
816     my $node = $self->{<Q::TreeCore:node>};
817     $r->{<Q::sourceFile>} = $node->{<Q::sourceFile>};
818     $r->{<Q::sourceLine>} = $node->{<Q::sourceLine>};
819     $r->{<Q::code>} = $codeArg;
820     $node->{<Q::sourceLine>} += ($codeArg =~ tr/\x0A/\x0A/);
821     $r = $r-><M::ManakaiDOM:ManakaiDOMNodeObject
822     ::ManakaiDOM:Perl.newReference>
823     (<ClassName::ManakaiPerlUnparsedCode>);
824    
825     @Method:
826     @@Name: skipLines
827     @@enDesc:
828     Skips lines in a code.
829     @@Param:
830     @@@Name: codeArg
831     @@@Type:
832     lang:Perl::ManakaiDOM:all
833     @@@enDesc:
834     A code fragment, which is counted lines.
835     @@Return:
836     @@@PerlDef:
837     $self->{<Q::TreeCore:node>}->{<Q::sourceLine>}
838     += ($codeArg =~ tr/\x0A/\x0A/);
839     ##PerlSub
840    
841     ClsDef:
842     @ClsQName: ManakaiPerlUnparsedCode
843     @ClsISA: ManakaiPerlCodeFragment
844     @enDesc:
845     Unparsed Perl code fragments.
846    
847     @IntMethod:
848     @@Name:newObject
849     @@ManakaiDOM:isStatic:1
850     @@Description:
851     @@@lang:en
852     @@@@:
853     Creates a new instance object for <Class::ManakaiPerlUnparsedCode>.
854     @@Return:
855     @@@Type:
856     ManakaiDOM:ManakaiDOMNodeObject::ManakaiDOM:Perl
857     @@@Description:
858     @@@@lang:en
859     @@@@@:
860     The newly created node object.
861     @@@PerlDef:
862     @@@@@:
863     my $node = $r = <ClassM::ManakaiDOM:ManakaiDOMNodeObject
864     ::ManakaiDOM:Perl.new>;
865     push @{$node->{<Q::TreeCore:origin>}}, <Q::pc:parent>;
866     $node->{<Q::pc:code>} = '';
867     @@@@ImplNote:
868     @@@@@lang:en
869     @@@@@@:
870     Optional properties: <Q::pc:cide>.
871     ##PerlUnparsedCode
872    
873     ClsDef:
874     @ClsQName: ManakaiPerlCodeImplementation
875     @enDesc:
876     The class that provides factory methods.
877    
878     @Role:
879     @@@:
880     DOMCore:DOMImplementation::ManakaiDOM:ManakaiDOM
881     @@compat:
882     DOMCore:ManakaiDOMImplementation::ManakaiDOM:ManakaiDOMLatest
883    
884     @Method:
885     @@Name: createPerlFile
886     @@enDesc:
887     Creates a Perl code file.
888     @@Return:
889     @@@Type: ManakaiPerlFile
890     @@@enDesc: A newly created Perl source file object.
891     @@@PerlDef:
892     $r = <ClassM::ManakaiPerlFile.newObject>;
893     $r = $r-><M::ManakaiDOM:ManakaiDOMNodeObject
894     ::ManakaiDOM:Perl.newReference>
895     (<ClassName::ManakaiPerlFile>);
896    
897     @IntMethod:
898     @@Name: perlComment
899     @@ManakaiDOM:isStatic:1
900     @@enDesc:
901     Generates a Perl comment string.
902     @@Param:
903     @@@Name: str
904     @@@Type:
905     DISLang:String
906     @@@enDesc:
907     A comment text.
908     @@Return:
909     @@@Type:
910     DISLang:String
911     @@@enDesc:
912     A Perl comment string.
913     @@@PerlDef:
914     $r = $str;
915     $r =~ s/\n/\n## /g;
916     $r =~ s/\n## $/\n/s;
917     $r .= "\n" unless $r =~ /\n$/;
918     $r = q<## > . $r;
919    
920     @IntMethod:
921     @@Name: rfc3339DateTime
922     @@ManakaiDOM:isStatic:1
923     @@enDesc:
924     Returns RFC 3339 <CODE::date-time> representation of a date.
925     @@Param:
926     @@@Name: perlDate
927     @@@Type:
928     DOMMain:unsigned-long
929     @@@enDesc:
930     A Perl representation of date.
931     @@Return:
932     @@@Type:
933     DISLang:String
934     @@@enDesc:
935     RFC 3339 date string.
936     @@@PerlDef:
937     my @time = gmtime $perlDate;
938     $r = sprintf q<%04d-%02d-%02dT%02d:%02d:%02d+00:00>,
939     $time[5] + 1900, $time[4] + 1, @time[3,2,1,0];
940    
941     @IntMethod:
942     @@Name: versionDateTime
943     @@ManakaiDOM:isStatic:1
944     @@enDesc:
945     Returns date for version.
946     @@Param:
947     @@@Name: perlDate
948     @@@Type:
949     DOMMain:unsigned-long
950     @@@enDesc:
951     A Perl representation of date.
952     @@Return:
953     @@@Type:
954     DISLang:String
955     @@@enDesc:
956     A Perl number literal.
957     @@@PerlDef:
958     my @time = gmtime $perlDate;
959     $r = sprintf q<%04d%02d%02d.%02d%02d>,
960     $time[5] + 1900, $time[4] + 1, @time[3,2,1];
961    
962     @Method:
963     @@Name: perlLiteral
964     @@enDesc:
965     Perl code representation.
966     @@Param:
967     @@@Name: val
968     @@@Type:
969     DOMMain:any
970     @@@enDesc:
971     A Perl value.
972     @@Return:
973     @@@Type:
974     DISLang:String
975     @@@enDesc:
976     A Perl lexical representation of <P::val>.
977     @@@PerlDef:
978     unless (defined $val) {
979     $r = q<undef>;
980     } elsif (ref $val eq 'ARRAY') {
981     __DEEP{
982     $r = q<[> . <ClassM::ManakaiPerlCodeImplementation
983     .perlLiteral> ($val) . q<]>;
984     }__;
985     } elsif (ref $val eq 'HASH') {
986     __DEEP{
987     $r = q<{> . <ClassM::ManakaiPerlCodeImplementation
988     .perlLiteral> ([%$val]) . q<}>;
989     }__;
990     } else {
991     $val =~ s/(['\\])/\\$1/g;
992     $r = q<'> . $val . q<'>;
993     }
994    
995     @Method:
996     @@Name: perlList
997     @@enDesc:
998     Perl code representation of a list.
999     @@Param:
1000     @@@Name: val
1001     @@@Type:
1002     Perl:ARRAY
1003     @@@enDesc:
1004     A Perl array reference.
1005     @@Return:
1006     @@@Type:
1007     DISLang:String
1008     @@@enDesc:
1009     A Perl lexical representation of <CODE::@$val>.
1010     @@@PerlDef:
1011     __DEEP{
1012     $r = join (q<, >, map {<ClassM::ManakaiPerlCodeImplementation
1013     .perlLiteral> ($_)} @{$val});
1014     }__;
1015     ##PerlCodeImplementation
1016    
1017     PropDef:
1018     @QName: code
1019     @enDesc: Perl code.
1020    
1021     PropDef:
1022     @QName: sourceFile
1023     @enDesc:
1024     Source file.
1025    
1026     PropDef:
1027     @QName: sourceLine
1028     @enDesc:
1029     Source line number.
1030    
1031     PropDef:
1032     @QName: prototype
1033     @enDesc:
1034     Prototype of subroutine.
1035    
1036     PropDef:
1037     @QName: parent
1038     @enDesc:
1039     Higher-level object.
1040    
1041     PropDef:
1042     @QName: sub
1043     @enDesc:
1044     Perl subroutines.
1045    
1046     PropDef:
1047     @QName: packageName
1048     @Type:
1049     Perl:package-name
1050     @enDesc:
1051     The fully qualified names of packages.
1052    
1053     PropDef:
1054     @QName: childNodes
1055     @enDesc:
1056     Child code fragments.
1057    
1058     PropDef:
1059     @QName: localName
1060     @enDesc:
1061     Scoped names.
1062    
1063     ElementTypeBinding:
1064     @Name: ClsDef
1065     @ElementType:
1066     dis:ResourceDef
1067     @ShadowContent:
1068     @@rdf:type:
1069     ManakaiDOM:Class
1070     @@AliasFor:
1071     @@@@:
1072     ::ManakaiDOM:Perl
1073     @@@For:
1074     !=ManakaiDOM:Perl
1075     @@ForCheck:
1076     ManakaiDOM:Perl
1077     @@DOMMain:implementFeature: CoreFeature10
1078    
1079     ElementTypeBinding:
1080     @Name: ClsQName
1081     @ElementType:
1082     dis:QName
1083    
1084     ElementTypeBinding:
1085     @Name: ClsISA
1086     @ElementType:
1087     dis:ISA
1088    
1089     ElementTypeBinding:
1090     @Name: Method
1091     @ElementType:
1092     dis:ResourceDef
1093     @ShadowContent:
1094     @@rdf:type:
1095     DISLang:Method
1096    
1097     ElementTypeBinding:
1098     @Name: ToStringMethod
1099     @ElementType:
1100     dis:ResourceDef
1101     @ShadowContent:
1102     @@rdf:type:
1103     DISLang:Method
1104     @@Operator:
1105     @@@@:
1106     DISPerl:AsStringMethod
1107     @@@ContentType:
1108     dis:TypeQName
1109     @@Description:
1110     @@@lang:en
1111     @@@@:
1112     Returns the textual Perl source code representation of this object.
1113    
1114     ElementTypeBinding:
1115     @Name: IntMethod
1116     @ElementType:
1117     dis:ResourceDef
1118     @ShadowContent:
1119     @@rdf:type:
1120     DISLang:Method
1121     @@ManakaiDOM:isForInternal:1
1122    
1123     ElementTypeBinding:
1124     @Name: Attr
1125     @ElementType:
1126     dis:ResourceDef
1127     @ShadowContent:
1128     @@rdf:type:
1129     DISLang:Attribute
1130    
1131     ElementTypeBinding:
1132     @Name: Return
1133     @ElementType:
1134     dis:ResourceDef
1135     @ShadowContent:
1136     @@rdf:type:
1137     DISLang:MethodReturn
1138    
1139     ElementTypeBinding:
1140     @Name: Get
1141     @ElementType:
1142     dis:ResourceDef
1143     @ShadowContent:
1144     @@rdf:type:
1145     DISLang:AttributeGet
1146    
1147     ElementTypeBinding:
1148     @Name: Set
1149     @ElementType:
1150     dis:ResourceDef
1151     @ShadowContent:
1152     @@rdf:type:
1153     DISLang:AttributeSet
1154    
1155     ElementTypeBinding:
1156     @Name: Param
1157     @ElementType:
1158     dis:ResourceDef
1159     @ShadowContent:
1160     @@rdf:type:
1161     DISLang:MethodParameter
1162    
1163     ElementTypeBinding:
1164     @Name: PerlDef
1165     @ElementType:
1166     dis:Def
1167     @ShadowContent:
1168     @@ContentType:
1169     lang:Perl
1170    
1171     ElementTypeBinding:
1172     @Name: disDef
1173     @ElementType:
1174     dis:Def
1175     @ShadowContent:
1176     @@ContentType:
1177     lang:dis
1178    
1179     ElementTypeBinding:
1180     @Name: InCase
1181     @ElementType:
1182     dis:ResourceDef
1183     @ShadowContent:
1184     @@rdf:type:
1185     ManakaiDOM:InCase
1186    
1187     ElementTypeBinding:
1188     @Name: nullCase
1189     @ElementType:
1190     dis:ResourceDef
1191     @ShadowContent:
1192     @@rdf:type:
1193     ManakaiDOM:InCase
1194     @@Value:
1195     @@@is-null:1
1196    
1197     ElementTypeBinding:
1198     @Name: TrueCase
1199     @ElementType:
1200     dis:ResourceDef
1201     @ShadowContent:
1202     @@rdf:type:
1203     ManakaiDOM:InCase
1204     @@Value:true
1205     @@Type:
1206     DOMMain:boolean
1207    
1208    
1209     ElementTypeBinding:
1210     @Name: FalseCase
1211     @ElementType:
1212     dis:ResourceDef
1213     @ShadowContent:
1214     @@rdf:type:
1215     ManakaiDOM:InCase
1216     @@Value:false
1217     @@Type:
1218     DOMMain:boolean
1219    
1220     ElementTypeBinding:
1221     @Name: enDesc
1222     @ElementType:
1223     dis:Description
1224     @ShadowContent:
1225     @@lang:en
1226    
1227     ElementTypeBinding:
1228     @Name: PropDef
1229     @ElementType:
1230     dis:ResourceDef
1231     @ShadowContent:
1232     @@rdf:type:
1233     rdf:Property
1234     @@AliasFor:
1235     @@@@:
1236     ::ManakaiDOM:all
1237     @@@For:
1238     !=ManakaiDOM:all
1239    
1240     ElementTypeBinding:
1241     @Name: NamedParam
1242     @ElementType:
1243     dis:ResourceDef
1244     @ShadowContent:
1245     @@rdf:type:
1246     DISLang:MethodParameter
1247     @@DISPerl:isNamedParameter:1
1248    

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24