/[suikacvs]/messaging/manakai/lib/Message/DOM/AttributeDefinition.pm
Suika

Diff of /messaging/manakai/lib/Message/DOM/AttributeDefinition.pm

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

revision 1.2 by wakaba, Fri Jun 15 14:32:50 2007 UTC revision 1.9 by wakaba, Sun Jul 8 13:04:36 2007 UTC
# Line 3  use strict; Line 3  use strict;
3  our $VERSION=do{my @r=(q$Revision$=~/\d+/g);sprintf "%d."."%02d" x $#r,@r};  our $VERSION=do{my @r=(q$Revision$=~/\d+/g);sprintf "%d."."%02d" x $#r,@r};
4  push our @ISA, 'Message::DOM::Node', 'Message::IF::AttributeDefinition';  push our @ISA, 'Message::DOM::Node', 'Message::IF::AttributeDefinition';
5  require Message::DOM::Node;  require Message::DOM::Node;
6    require Message::DOM::Attr;
 ## Spec:  
 ## <http://suika.fam.cx/gate/2005/sw/AttributeDefinition>  
7    
8  sub ____new ($$$) {  sub ____new ($$$) {
9    my $self = shift->SUPER::____new (shift);    my $self = shift->SUPER::____new (shift);
10    $$self->{node_name} = $_[0];    $$self->{node_name} = $_[0];
11      $$self->{child_nodes} = [];
12      $$self->{allowed_tokens} = [];
13    return $self;    return $self;
14  } # ____new  } # ____new
15                            
# Line 33  sub AUTOLOAD { Line 33  sub AUTOLOAD {
33        }        }
34      };      };
35      goto &{ $AUTOLOAD };      goto &{ $AUTOLOAD };
   } elsif ({  
     ## Read-write attributes (DOMString, trivial accessors)  
   }->{$method_name}) {  
     no strict 'refs';  
     eval qq{  
       sub $method_name (\$) {  
         if (\@_ > 1) {  
           \${\$_[0]}->{$method_name} = ''.$_[1];  
         }  
         return \${\$_[0]}->{$method_name};  
       }  
     };  
     goto &{ $AUTOLOAD };  
36    } else {    } else {
37      require Carp;      require Carp;
38      Carp::croak (qq<Can't locate method "$AUTOLOAD">);      Carp::croak (qq<Can't locate method "$AUTOLOAD">);
39    }    }
40  } # AUTOLOAD  } # AUTOLOAD
41    
42    ## |AttributeDefinition| constants
43    
44    ## |DeclaredValueType|
45    sub NO_TYPE_ATTR () { 0 }
46    sub CDATA_ATTR () { 1 }
47    sub ID_ATTR () { 2 }
48    sub IDREF_ATTR () { 3 }
49    sub IDREFS_ATTR () { 4 }
50    sub ENTITY_ATTR () { 5 }
51    sub ENTITIES_ATTR () { 6 }
52    sub NMTOKEN_ATTR () { 7 }
53    sub NMTOKENS_ATTR () { 8 }
54    sub NOTATION_ATTR () { 9 }
55    sub ENUMERATION_ATTR () { 10 }
56    sub UNKNOWN_ATTR () { 11 }
57    
58    ## |DefaultValueType|
59    sub UNKNOWN_DEFAULT () { 0 }
60    sub FIXED_DEFAULT () { 1 }
61    sub REQUIRED_DEFAULT () { 2 }
62    sub IMPLIED_DEFAULT () { 3 }
63    sub EXPLICIT_DEFAULT () { 4 }
64    
65  ## The |Node| interface - attribute  ## The |Node| interface - attribute
66    
67  ## Spec:  ## Spec:
# Line 70  sub node_type ($) { 81002 } # ATTRIBUTE_ Line 80  sub node_type ($) { 81002 } # ATTRIBUTE_
80    
81  ## TODO: node_value  ## TODO: node_value
82    
83    ## |Node| methods
84    
85    *append_child = \&Message::DOM::Attr::append_child;
86    
87    *insert_before = \&Message::DOM::Attr::insert_before;
88    
89    *replace_child = \&Message::DOM::Attr::replace_child;
90    
91    ## |AttributeDefinition| attributes
92    
93    sub allowed_tokens ($) {
94      require Message::DOM::DOMStringList;
95      return bless \[$_[0], 'allowed_tokens'], 'Message::DOM::DOMStringList';
96    } # allowed_tokens
97    
98    sub declared_type ($;$) {
99      my $self = $_[0];
100      if (@_ > 1) {
101        if (${$$self->{owner_document}}->{strict_error_checking}) {
102          if ($$self->{manakai_read_only}) {
103            report Message::DOM::DOMException
104                -object => $self,
105                -type => 'NO_MODIFICATION_ALLOWED_ERR',
106                -subtype => 'READ_ONLY_NODE_ERR';
107          }
108        }
109        if ($_[1]) {
110          $$self->{declared_type} = 0+$_[1];
111        } else {
112          delete $$self->{declared_type};
113        }
114      }
115      
116      return $$self->{declared_type} || 0;
117    } # declared_type
118    
119    sub default_type ($;$) {
120      my $self = $_[0];
121      if (@_ > 1) {
122        if (${$$self->{owner_document}}->{strict_error_checking}) {
123          if ($$self->{manakai_read_only}) {
124            report Message::DOM::DOMException
125                -object => $self,
126                -type => 'NO_MODIFICATION_ALLOWED_ERR',
127                -subtype => 'READ_ONLY_NODE_ERR';
128          }
129        }
130        if ($_[1]) {
131          $$self->{default_type} = 0+$_[1];
132        } else {
133          delete $$self->{default_type};
134        }
135      }
136      
137      return $$self->{default_type} || 0;
138    } # default_type
139    
140  package Message::IF::AttributeDefinition;  package Message::IF::AttributeDefinition;
141    
142  package Message::DOM::Document;  package Message::DOM::Document;

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.9

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24