Welcome to the "trac"-ing site of soap4r!
[soap4r] [httpclient] [openpgp4u] [pkcs1] [logger] [csv] [vtr]

root/branches/1_5/lib/wsdl/xmlSchema/attribute.rb

Revision 1824, 2.4 kB (checked in by nahi, 2 years ago)
  • Copyright notice updated. add '2000-2007' uniformly.
  • Property svn:eol-style set to native
  • Property svn:keywords set to author date id revision
Line 
1 # WSDL4R - XMLSchema attribute definition for WSDL.
2 # Copyright (C) 2000-2007  NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
4 # This program is copyrighted free software by NAKAMURA, Hiroshi.  You can
5 # redistribute it and/or modify it under the same terms of Ruby's license;
6 # either the dual license version in 2003, or any later version.
7
8
9 require 'wsdl/info'
10
11
12 module WSDL
13 module XMLSchema
14
15
16 class Attribute < Info
17   class << self
18     if RUBY_VERSION > "1.7.0"
19       def attr_reader_ref(symbol)
20         name = symbol.to_s
21         define_method(name) {
22           instance_variable_get("@#{name}") ||
23             (refelement ? refelement.__send__(name) : nil)
24         }
25       end
26     else
27       def attr_reader_ref(symbol)
28         name = symbol.to_s
29         module_eval <<-EOS
30           def #{name}
31             @#{name} || (refelement ? refelement.#{name} : nil)
32           end
33         EOS
34       end
35     end
36   end
37
38   attr_writer :use
39   attr_writer :form
40   attr_writer :name
41   attr_writer :type
42   attr_writer :local_simpletype
43   attr_writer :default
44   attr_writer :fixed
45
46   attr_reader_ref :use
47   attr_reader_ref :form
48   attr_reader_ref :name
49   attr_reader_ref :type
50   attr_reader_ref :local_simpletype
51   attr_reader_ref :default
52   attr_reader_ref :fixed
53
54   attr_accessor :ref
55   attr_accessor :arytype
56
57   def initialize
58     super
59     @use = nil
60     @form = nil
61     @name = nil
62     @type = nil
63     @local_simpletype = nil
64     @default = nil
65     @fixed = nil
66     @ref = nil
67     @refelement = nil
68     @arytype = nil
69   end
70
71   def refelement
72     @refelement ||= root.collect_attributes[@ref]
73   end
74
75   def targetnamespace
76     parent.targetnamespace
77   end
78
79   def parse_element(element)
80     case element
81     when SimpleTypeName
82       @local_simpletype = SimpleType.new
83       @local_simpletype
84     end
85   end
86
87   def parse_attr(attr, value)
88     case attr
89     when RefAttrName
90       @ref = value
91     when UseAttrName
92       @use = value.source
93     when FormAttrName
94       @form = value.source
95     when NameAttrName
96       if directelement?
97         @name = XSD::QName.new(targetnamespace, value.source)
98       else
99         @name = XSD::QName.new(nil, value.source)
100       end
101     when TypeAttrName
102       @type = value
103     when DefaultAttrName
104       @default = value.source
105     when FixedAttrName
106       @fixed = value.source
107     when ArrayTypeAttrName
108       @arytype = value
109     else
110       nil
111     end
112   end
113
114 private
115
116   def directelement?
117     parent.is_a?(Schema)
118   end
119 end
120
121
122 end
123 end
Note: See TracBrowser for help on using the browser.