/[suikacvs]/messaging/manakai/lib/Message/DOM/XDP.dis
Suika

Diff of /messaging/manakai/lib/Message/DOM/XDP.dis

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by wakaba, Mon May 15 12:58:02 2006 UTC revision 1.7 by wakaba, Sun Jun 18 04:12:48 2006 UTC
# Line 849  IFClsDef: Line 849  IFClsDef:
849    
850    @Method:    @Method:
851      @@Name: createXDPRNIKeyword      @@Name: createXDPRNIKeyword
852        @@dlp:methodName: create_xdp_rni_keyword
853      @@enDesc:      @@enDesc:
854        Creates a <XE::xdp|rni-keyword> element.        Creates a <XE::xdp|rni-keyword> element.
855      @@Param:      @@Param:
# Line 3536  IFClsDef: Line 3537  IFClsDef:
3537    
3538          $test->id ('dtdText');          $test->id ('dtdText');
3539          $test->assert_equals ($el-><AG::XDPElement.dtdText>, '<!ELEMENT>');          $test->assert_equals ($el-><AG::XDPElement.dtdText>, '<!ELEMENT>');
3540    
3541      @Method:
3542        @@Name: createXDPIf
3543        @@enDesc:
3544          Creates an <XE::xdp|if> element.
3545        @@Param:
3546          @@@Name: statusEntity
3547          @@@Type: DOMString
3548          @@@enDesc:
3549            The name of the parameter entity that contains
3550            the status of the marked section.
3551          @@@nullCase:
3552            @@@@enDesc:
3553              Same as an empty string.
3554        @@Return:
3555          @@@Type: XDPIfElement
3556          @@@enDesc:
3557            The newly created element node.
3558    
3559            {P:: A new <IF::Element> node with following attributes
3560                 <kwd:MUST> be returned:
3561    
3562               - <A::Node.localName>::: <XE::if>.
3563    
3564               - <A::Node.namespaceURI>::: <URI^^DISCore|QName::xdp|>.
3565    
3566               - <A::Node.ownerDocument>::: The document.
3567              
3568            }
3569    
3570            {P:: The <A::Node.attributes> <IF::tc|NamedNodeMap>
3571                 of the returned <IF:Element> node <kwd:MUST> contain
3572                 a new <IF::te|Attr> node with following attributes:
3573    
3574               - <A::Node.localName>::: <XA::status-entity>.
3575    
3576               - <A::Node.namespaceURI>::: <DOM::null>.
3577    
3578               - <A::te|Attr.specified>::: <DOM::true>.
3579    
3580               - <A::Node.textContent>::: <P::statusEntity>, or an empty
3581                                          string if <P::statusEntity>
3582                                          is <DOM::null>.
3583    
3584            }
3585    
3586            {P:: <A::Node.childNodes> <IF::tc|NodeList> of
3587                 the returned <IF::Element> node <kwd:MUST> contain
3588                 two <IF::Element> nodes in order:
3589    
3590               {LI::
3591                
3592                 - <A::Node.localName>::: <XE::true>.
3593    
3594                 - <A::Node.namespaceURI>::: <URI^^DISCore|QName::xdp|>.
3595    
3596                 - <A::Node.ownerDocument>::: The document.
3597    
3598                 - <A::Node.textContent>::: An empty string.
3599    
3600               }
3601    
3602               {LI::
3603    
3604                 - <A::Node.localName>::: <XE::false>.
3605    
3606                 - <A::Node.namespaceURI>::: <URI^^DISCore|QName::xdp|>.
3607    
3608                 - <A::Node.ownerDocument>::: The document.
3609    
3610                 - <A::Node.textContent>::: An empty string.
3611    
3612               }
3613    
3614            }
3615          @@@PerlDef:
3616            __DEEP{
3617              $r = $self-><M::Document.createElementNS> (<Q::xdp|>, 'if');
3618              $r-><M::Element.setAttributeNS>
3619                    (null, 'status-entity',
3620                     defined $statusEntity ? $statusEntity : '');
3621              $r-><M::Node.appendChild>
3622                    ($self-><M::Document.createElementNS> (<Q::xdp|>, 'tr'.'ue'));
3623              $r-><M::Node.appendChild>
3624                    ($self-><M::Document.createElementNS> (<Q::xdp|>, 'fal'.'se'));
3625            }__;
3626    
3627        @@Test:
3628          @@@QName: XDPDocument.createXDPIf.1.test
3629          @@@PerlDef:
3630            my $doc;
3631            __CODE{createXDPDocumentForTest}__;
3632    
3633            my $el = $doc-><M::XDPDocument.createXDPIf> ('aname');
3634    
3635            $test->id ('interface');
3636            $test->assert_isa ($el, <IFName::XDPIfElement>);
3637    
3638            $test->id ('namespaceURI');
3639            $test->assert_equals ($el-><AG::Node.namespaceURI>, <Q::xdp|>);
3640    
3641            $test->id ('localName');
3642            $test->assert_equals ($el-><AG::Node.localName>, 'if');
3643    
3644            $test->id ('dtdText');
3645            $test->assert_equals ($el-><AG::XDPElement.dtdText>,
3646                                  "<![%aname;[\n<!-- end of aname -->]]>");
3647    
3648            $test->id ('fc');
3649            my $fc = $el-><AG::Node.firstChild>;
3650            $test->assert_isa ($fc, <IFName::XDPElement>);
3651    
3652            $test->id ('fc.namespaceURI');
3653            $test->assert_equals ($fc-><AG::Node.namespaceURI>, <Q::xdp|>);
3654    
3655            $test->id ('fc.localName');
3656            $test->assert_equals ($fc-><AG::Node.localName>, 'tr'.'ue');
3657    
3658            $test->id ('lc');
3659            my $lc = $el-><AG::Node.lastChild>;
3660            $test->assert_isa ($fc, <IFName::XDPElement>);
3661    
3662            $test->id ('lc.namespaceURI');
3663            $test->assert_equals ($lc-><AG::Node.namespaceURI>, <Q::xdp|>);
3664    
3665            $test->id ('lc.localName');
3666            $test->assert_equals ($lc-><AG::Node.localName>, 'fal'.'se');
3667  ##XDPDocument  ##XDPDocument
3668    
3669  IFClsDef:  IFClsDef:
# Line 4006  IFClsETDef: Line 4134  IFClsETDef:
4134          C: while (defined $current) {          C: while (defined $current) {
4135            if ($current-><AG::Node.nodeType> == <C::Node.ELEMENT_NODE>) {            if ($current-><AG::Node.nodeType> == <C::Node.ELEMENT_NODE>) {
4136              if ({              if ({
4137                      <Q::xdp|attr-definition> => true,
4138                    <Q::xdp|peref> => true,                    <Q::xdp|peref> => true,
4139                  }->{$current->manakai_expanded_uri}) {                  }->{$current->manakai_expanded_uri}) {
4140                $r .= $current-><AG::XDPElement.dtdText>;                $r .= $current-><AG::XDPElement.dtdText>;
# Line 4150  IFClsETDef: Line 4279  IFClsETDef:
4279          $r =~ s/"/%22/g;          $r =~ s/"/%22/g;
4280          $r = '"'.$r.'"';          $r = '"'.$r.'"';
4281  ##XDPSystemLiteralElement  ##XDPSystemLiteralElement
4282    
4283    IFClsETDef:
4284      @IFQName: XDPIfElement
4285      @ETQName: xdp|if
4286      @ClsQName: ManakaiDOMXDPIfElement
4287    
4288      @IFISA: XDPElement
4289      @ClsISA: ManakaiDOMXDPElement
4290    
4291      @enDesc:
4292        An <XE::xdp|if> element represents a set of XML DTD declarations
4293        with a conditional section that can be enabled by a
4294        parameter entity.
4295    
4296      @CAttr:
4297        @@Name: dtdText
4298        @@Type: DOMString
4299        @@Get:
4300          @@@PerlDef:
4301            __DEEP{
4302              require Message::DOM::Traversal;
4303              my $doctrv = $self-><AG::Node.ownerDocument>
4304                                -><M::Node.getFeature> (Traversal => '2.0');
4305              my $tw = $doctrv->create_tree_walker
4306                                  ($self, <C::NodeFilter.SHOW_ELEMENT> |
4307                                          <C::NodeFilter.SHOW_TEXT> |
4308                                          <C::NodeFilter.SHOW_CDATA_SECTION>,
4309                                   sub {
4310                                     my $node = $_[1];
4311                                     if ($node-><AG::Node.nodeType>
4312                                             == <C::Node.ELEMENT_NODE>) {
4313                                       my $ns = $node-><AG::Node.namespaceURI>;
4314                                       if (not defined $ns) {
4315                                         return <C::NodeFilter.FILTER_REJECT>;
4316                                       } elsif ($ns eq <Q::xdp|>) {
4317                                         return <C::NodeFilter.FILTER_ACCEPT>;
4318                                       } else {
4319                                         return <C::NodeFilter.FILTER_REJECT>;
4320                                       }
4321                                     } else {
4322                                       return <C::NodeFilter.FILTER_ACCEPT>;
4323                                     }
4324                                   }, true);
4325              my $current = $tw->first_child;
4326    
4327              my $pename = $self-><M::Element.getAttributeNS>
4328                                    (null, 'status-entity');
4329              $r = '<![%'.$pename.";[\n";
4330        
4331              my $has_true;
4332              C: while (defined $current) {
4333                if ($current-><AG::Node.nodeType> == <C::Node.ELEMENT_NODE>) {
4334                  if (not $has_true and
4335                      $current->manakai_expanded_uri eq <Q::xdp|true>) {
4336                    $r .= $current-><AG::XDPElement.dtdText>;
4337                    $r .= "<!-- end of $pename -->]]>";
4338                    $has_true = true;
4339                  } elsif ($current->manakai_expanded_uri eq <Q::xdp|false>) {
4340                    my $v = $current-><AG::XDPElement.dtdText>;
4341                    $r .= "\n" if length $v;
4342                    $r .= $v;
4343                  } else {
4344                    $r .= $current-><AG::XDPElement.dtdText>;
4345                  }
4346                } else {
4347                  $r .= $current-><AG::XDPElement.dtdText>;
4348                }
4349              
4350                $current = $tw->next_sibling;
4351              } # C
4352    
4353              $r .= "<!-- end of $pename -->]]>" unless $has_true;
4354            }__;
4355    ##XDPIfElement

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.7

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24