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

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24