source: extensions/gsdl-video/trunk/installed/cmdline/lib/ruby/1.8/wsdl/xmlSchema/attribute.rb@ 18425

Last change on this file since 18425 was 18425, checked in by davidb, 15 years ago

Video extension to Greenstone

File size: 2.5 KB
Line 
1# WSDL4R - XMLSchema attribute definition for WSDL.
2# Copyright (C) 2002, 2003, 2005 NAKAMURA, Hiroshi <[email protected]>.
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
9require 'wsdl/info'
10
11
12module WSDL
13module XMLSchema
14
15
16class 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 = if value.namespace.nil?
109 XSD::QName.new(XSD::Namespace, value.source)
110 else
111 value
112 end
113 else
114 nil
115 end
116 end
117
118private
119
120 def directelement?
121 parent.is_a?(Schema)
122 end
123end
124
125
126end
127end
Note: See TracBrowser for help on using the repository browser.