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

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

Revision 1917, 1.7 kB (checked in by nahi, 1 year ago)
  • added support for attributeGroup.
Line 
1 # WSDL4R - XMLSchema attributeGroup 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 AttributeGroup < 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 :name     # required
39   attr_writer :attributes
40
41   attr_reader_ref :name
42   attr_reader_ref :attributes
43
44   attr_accessor :ref
45
46   def initialize
47     super
48     @name = nil
49     @attributes = nil
50     @ref = nil
51     @refelement = nil
52   end
53
54   def refelement
55     @refelement ||= root.collect_attributegroups[@ref]
56   end
57
58   def targetnamespace
59     parent.targetnamespace
60   end
61
62   def parse_element(element)
63     case element
64     when AttributeName
65       @attributes ||= XSD::NamedElements.new
66       o = Attribute.new
67       @attributes << o
68       o
69     end
70   end
71
72   def parse_attr(attr, value)
73     case attr
74     when NameAttrName
75       @name = XSD::QName.new(targetnamespace, value.source)
76     when RefAttrName
77       @ref = value
78     else
79       nil
80     end
81   end
82 end
83
84
85 end
86 end
Note: See TracBrowser for help on using the browser.