soap4r_es 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. checksums.yaml +7 -0
  2. data/bin/wsdl2ruby.rb +140 -0
  3. data/bin/wsdl2ruby_rails.rb +140 -0
  4. data/bin/xsd2ruby.rb +92 -0
  5. data/lib/soap/attachment.rb +109 -0
  6. data/lib/soap/attrproxy.rb +35 -0
  7. data/lib/soap/baseData.rb +1095 -0
  8. data/lib/soap/element.rb +278 -0
  9. data/lib/soap/encodingstyle/aspDotNetHandler.rb +208 -0
  10. data/lib/soap/encodingstyle/handler.rb +121 -0
  11. data/lib/soap/encodingstyle/literalHandler.rb +196 -0
  12. data/lib/soap/encodingstyle/soapHandler.rb +560 -0
  13. data/lib/soap/filter/filterchain.rb +52 -0
  14. data/lib/soap/filter/handler.rb +32 -0
  15. data/lib/soap/filter/streamhandler.rb +30 -0
  16. data/lib/soap/filter.rb +14 -0
  17. data/lib/soap/generator.rb +299 -0
  18. data/lib/soap/header/handler.rb +64 -0
  19. data/lib/soap/header/handlerset.rb +78 -0
  20. data/lib/soap/header/mappinghandler.rb +48 -0
  21. data/lib/soap/header/simplehandler.rb +45 -0
  22. data/lib/soap/httpconfigloader.rb +140 -0
  23. data/lib/soap/mapping/encodedregistry.rb +541 -0
  24. data/lib/soap/mapping/factory.rb +389 -0
  25. data/lib/soap/mapping/literalregistry.rb +392 -0
  26. data/lib/soap/mapping/mapping.rb +577 -0
  27. data/lib/soap/mapping/registry.rb +297 -0
  28. data/lib/soap/mapping/rubytypeFactory.rb +446 -0
  29. data/lib/soap/mapping/schemadefinition.rb +171 -0
  30. data/lib/soap/mapping/typeMap.rb +107 -0
  31. data/lib/soap/mapping/wsdlencodedregistry.rb +212 -0
  32. data/lib/soap/mapping/wsdlliteralregistry.rb +249 -0
  33. data/lib/soap/mapping.rb +13 -0
  34. data/lib/soap/marshal.rb +60 -0
  35. data/lib/soap/mimemessage.rb +243 -0
  36. data/lib/soap/nestedexception.rb +43 -0
  37. data/lib/soap/netHttpClient.rb +242 -0
  38. data/lib/soap/ns.rb +39 -0
  39. data/lib/soap/parser.rb +253 -0
  40. data/lib/soap/processor.rb +67 -0
  41. data/lib/soap/property.rb +330 -0
  42. data/lib/soap/proxy.rb +15 -0
  43. data/lib/soap/rpc/cgistub.rb +249 -0
  44. data/lib/soap/rpc/driver.rb +222 -0
  45. data/lib/soap/rpc/element.rb +375 -0
  46. data/lib/soap/rpc/httpserver.rb +144 -0
  47. data/lib/soap/rpc/methodDef.rb +69 -0
  48. data/lib/soap/rpc/proxy.rb +573 -0
  49. data/lib/soap/rpc/router.rb +672 -0
  50. data/lib/soap/rpc/rpc.rb +26 -0
  51. data/lib/soap/rpc/soaplet.rb +201 -0
  52. data/lib/soap/rpc/standaloneServer.rb +44 -0
  53. data/lib/soap/soap.rb +163 -0
  54. data/lib/soap/streamHandler.rb +302 -0
  55. data/lib/soap/version.rb +12 -0
  56. data/lib/soap/wsdlDriver.rb +165 -0
  57. data/lib/wsdl/binding.rb +66 -0
  58. data/lib/wsdl/data.rb +65 -0
  59. data/lib/wsdl/definitions.rb +237 -0
  60. data/lib/wsdl/documentation.rb +33 -0
  61. data/lib/wsdl/import.rb +81 -0
  62. data/lib/wsdl/importer.rb +39 -0
  63. data/lib/wsdl/info.rb +51 -0
  64. data/lib/wsdl/message.rb +55 -0
  65. data/lib/wsdl/operation.rb +152 -0
  66. data/lib/wsdl/operationBinding.rb +241 -0
  67. data/lib/wsdl/param.rb +94 -0
  68. data/lib/wsdl/parser.rb +180 -0
  69. data/lib/wsdl/part.rb +53 -0
  70. data/lib/wsdl/port.rb +67 -0
  71. data/lib/wsdl/portType.rb +76 -0
  72. data/lib/wsdl/service.rb +62 -0
  73. data/lib/wsdl/soap/address.rb +41 -0
  74. data/lib/wsdl/soap/binding.rb +50 -0
  75. data/lib/wsdl/soap/body.rb +59 -0
  76. data/lib/wsdl/soap/cgiStubCreator.rb +93 -0
  77. data/lib/wsdl/soap/classDefCreator.rb +529 -0
  78. data/lib/wsdl/soap/classDefCreatorSupport.rb +242 -0
  79. data/lib/wsdl/soap/classNameCreator.rb +57 -0
  80. data/lib/wsdl/soap/clientSkeltonCreator.rb +107 -0
  81. data/lib/wsdl/soap/complexType.rb +174 -0
  82. data/lib/wsdl/soap/data.rb +43 -0
  83. data/lib/wsdl/soap/definitions.rb +201 -0
  84. data/lib/wsdl/soap/driverCreator.rb +121 -0
  85. data/lib/wsdl/soap/element.rb +34 -0
  86. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +74 -0
  87. data/lib/wsdl/soap/fault.rb +57 -0
  88. data/lib/wsdl/soap/header.rb +87 -0
  89. data/lib/wsdl/soap/headerfault.rb +57 -0
  90. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +116 -0
  91. data/lib/wsdl/soap/mappingRegistryCreator.rb +59 -0
  92. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +380 -0
  93. data/lib/wsdl/soap/methodDefCreator.rb +200 -0
  94. data/lib/wsdl/soap/operation.rb +113 -0
  95. data/lib/wsdl/soap/servantSkeltonCreator.rb +92 -0
  96. data/lib/wsdl/soap/servletStubCreator.rb +105 -0
  97. data/lib/wsdl/soap/standaloneServerStubCreator.rb +101 -0
  98. data/lib/wsdl/soap/wsdl2ruby.rb +249 -0
  99. data/lib/wsdl/types.rb +45 -0
  100. data/lib/wsdl/wsdl.rb +25 -0
  101. data/lib/wsdl/xmlSchema/all.rb +25 -0
  102. data/lib/wsdl/xmlSchema/annotation.rb +35 -0
  103. data/lib/wsdl/xmlSchema/any.rb +62 -0
  104. data/lib/wsdl/xmlSchema/anyAttribute.rb +49 -0
  105. data/lib/wsdl/xmlSchema/attribute.rb +105 -0
  106. data/lib/wsdl/xmlSchema/attributeGroup.rb +69 -0
  107. data/lib/wsdl/xmlSchema/choice.rb +59 -0
  108. data/lib/wsdl/xmlSchema/complexContent.rb +98 -0
  109. data/lib/wsdl/xmlSchema/complexExtension.rb +120 -0
  110. data/lib/wsdl/xmlSchema/complexRestriction.rb +105 -0
  111. data/lib/wsdl/xmlSchema/complexType.rb +194 -0
  112. data/lib/wsdl/xmlSchema/content.rb +96 -0
  113. data/lib/wsdl/xmlSchema/data.rb +117 -0
  114. data/lib/wsdl/xmlSchema/element.rb +154 -0
  115. data/lib/wsdl/xmlSchema/enumeration.rb +37 -0
  116. data/lib/wsdl/xmlSchema/fractiondigits.rb +38 -0
  117. data/lib/wsdl/xmlSchema/group.rb +101 -0
  118. data/lib/wsdl/xmlSchema/import.rb +53 -0
  119. data/lib/wsdl/xmlSchema/importHandler.rb +45 -0
  120. data/lib/wsdl/xmlSchema/importer.rb +103 -0
  121. data/lib/wsdl/xmlSchema/include.rb +48 -0
  122. data/lib/wsdl/xmlSchema/length.rb +38 -0
  123. data/lib/wsdl/xmlSchema/list.rb +49 -0
  124. data/lib/wsdl/xmlSchema/maxexclusive.rb +38 -0
  125. data/lib/wsdl/xmlSchema/maxinclusive.rb +38 -0
  126. data/lib/wsdl/xmlSchema/maxlength.rb +38 -0
  127. data/lib/wsdl/xmlSchema/minexclusive.rb +38 -0
  128. data/lib/wsdl/xmlSchema/mininclusive.rb +38 -0
  129. data/lib/wsdl/xmlSchema/minlength.rb +38 -0
  130. data/lib/wsdl/xmlSchema/parser.rb +168 -0
  131. data/lib/wsdl/xmlSchema/pattern.rb +37 -0
  132. data/lib/wsdl/xmlSchema/ref.rb +34 -0
  133. data/lib/wsdl/xmlSchema/schema.rb +179 -0
  134. data/lib/wsdl/xmlSchema/sequence.rb +55 -0
  135. data/lib/wsdl/xmlSchema/simpleContent.rb +70 -0
  136. data/lib/wsdl/xmlSchema/simpleExtension.rb +63 -0
  137. data/lib/wsdl/xmlSchema/simpleRestriction.rb +133 -0
  138. data/lib/wsdl/xmlSchema/simpleType.rb +88 -0
  139. data/lib/wsdl/xmlSchema/totaldigits.rb +38 -0
  140. data/lib/wsdl/xmlSchema/union.rb +36 -0
  141. data/lib/wsdl/xmlSchema/unique.rb +35 -0
  142. data/lib/wsdl/xmlSchema/whitespace.rb +38 -0
  143. data/lib/wsdl/xmlSchema/xsd2ruby.rb +177 -0
  144. data/lib/xsd/charset.rb +190 -0
  145. data/lib/xsd/codegen/classdef.rb +230 -0
  146. data/lib/xsd/codegen/commentdef.rb +35 -0
  147. data/lib/xsd/codegen/gensupport.rb +277 -0
  148. data/lib/xsd/codegen/methoddef.rb +71 -0
  149. data/lib/xsd/codegen/moduledef.rb +209 -0
  150. data/lib/xsd/codegen.rb +13 -0
  151. data/lib/xsd/datatypes.rb +1465 -0
  152. data/lib/xsd/datatypes1999.rb +21 -0
  153. data/lib/xsd/iconvcharset.rb +33 -0
  154. data/lib/xsd/mapping.rb +69 -0
  155. data/lib/xsd/namedelements.rb +133 -0
  156. data/lib/xsd/ns.rb +183 -0
  157. data/lib/xsd/qname.rb +80 -0
  158. data/lib/xsd/xmlparser/libxmlparser.rb +136 -0
  159. data/lib/xsd/xmlparser/nokogiriparser.rb +63 -0
  160. data/lib/xsd/xmlparser/ogaparser.rb +53 -0
  161. data/lib/xsd/xmlparser/oxparser.rb +97 -0
  162. data/lib/xsd/xmlparser/parser.rb +101 -0
  163. data/lib/xsd/xmlparser/rexmlparser.rb +54 -0
  164. data/lib/xsd/xmlparser.rb +81 -0
  165. metadata +240 -0
@@ -0,0 +1,277 @@
1
+ # encoding: UTF-8
2
+ # XSD4R - Code generation support
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ module XSD
11
+ module CodeGen
12
+
13
+ # from the file 'keywords' in 1.9.
14
+ KEYWORDS = {}
15
+ %w(
16
+ __LINE__
17
+ __FILE__
18
+ BEGIN
19
+ END
20
+ alias
21
+ and
22
+ begin
23
+ break
24
+ case
25
+ class
26
+ def
27
+ defined?
28
+ do
29
+ else
30
+ elsif
31
+ end
32
+ ensure
33
+ false
34
+ for
35
+ if
36
+ in
37
+ module
38
+ next
39
+ nil
40
+ not
41
+ or
42
+ redo
43
+ rescue
44
+ retry
45
+ return
46
+ self
47
+ super
48
+ then
49
+ true
50
+ undef
51
+ unless
52
+ until
53
+ when
54
+ while
55
+ yield
56
+ ).each { |k| KEYWORDS[k] = nil }
57
+
58
+ # from Module.constants from 1.8 & 1.9
59
+ CONSTANTS = {}
60
+ %w(
61
+ ARGF
62
+ ARGV
63
+ ArgumentError
64
+ Array
65
+ BasicObject
66
+ Bignum
67
+ Binding
68
+ Class
69
+ Comparable
70
+ Continuation
71
+ Data
72
+ Dir
73
+ ENV
74
+ EOFError
75
+ Enumerable
76
+ Errno
77
+ Exception
78
+ FALSE
79
+ FalseClass
80
+ File
81
+ FileTest
82
+ Fixnum
83
+ Float
84
+ FloatDomainError
85
+ GC
86
+ Hash
87
+ IO
88
+ IOError
89
+ IndexError
90
+ Integer
91
+ Interrupt
92
+ Kernel
93
+ KeyError
94
+ LoadError
95
+ LocalJumpError
96
+ Marshal
97
+ MatchData
98
+ MatchingData
99
+ Math
100
+ Method
101
+ Module
102
+ Mutex
103
+ NIL
104
+ NameError
105
+ NilClass
106
+ NoMemoryError
107
+ NoMethodError
108
+ NotImplementedError
109
+ Numeric
110
+ Object
111
+ ObjectSpace
112
+ PLATFORM
113
+ Precision
114
+ Proc
115
+ Process
116
+ RELEASE_DATE
117
+ RUBY_PATCHLEVEL
118
+ RUBY_PLATFORM
119
+ RUBY_RELEASE_DATE
120
+ RUBY_VERSION
121
+ Range
122
+ RangeError
123
+ Regexp
124
+ RegexpError
125
+ RuntimeError
126
+ STDERR
127
+ STDIN
128
+ STDOUT
129
+ ScriptError
130
+ SecurityError
131
+ Signal
132
+ SignalException
133
+ StandardError
134
+ String
135
+ Struct
136
+ Symbol
137
+ SyntaxError
138
+ SystemCallError
139
+ SystemExit
140
+ SystemStackError
141
+ TOPLEVEL_BINDING
142
+ TRUE
143
+ Thread
144
+ ThreadError
145
+ ThreadGroup
146
+ Time
147
+ TrueClass
148
+ TypeError
149
+ UnboundMethod
150
+ VERSION
151
+ VM
152
+ ZeroDivisionError
153
+ ).each { |c| CONSTANTS[c] = nil }
154
+
155
+
156
+ module GenSupport
157
+ def capitalize(target)
158
+ target.sub(/^([a-z])/) { $1.upcase }
159
+ end
160
+ module_function :capitalize
161
+
162
+ def uncapitalize(target)
163
+ target.sub(/^([A-Z])/) { $1.downcase }
164
+ end
165
+ module_function :uncapitalize
166
+
167
+ def safeconstname(name)
168
+ safename = name.scan(/[a-zA-Z0-9_]+/).collect { |ele|
169
+ GenSupport.capitalize(ele)
170
+ }.join
171
+ if /\A[A-Z]/ !~ safename or keyword?(safename) or constant?(safename)
172
+ "C_#{safename}"
173
+ else
174
+ safename
175
+ end
176
+ end
177
+ module_function :safeconstname
178
+
179
+ def safeconstname?(name)
180
+ /\A[A-Z][a-zA-Z0-9_]*\z/ =~ name and !keyword?(name)
181
+ end
182
+ module_function :safeconstname?
183
+
184
+ def safemethodname(name)
185
+ postfix = name[/[=?!]$/]
186
+ safename = name.scan(/[a-zA-Z0-9_]+/).join('_')
187
+ safename = uncapitalize(safename)
188
+ safename += postfix if postfix
189
+ if /\A[a-z]/ !~ safename or keyword?(safename)
190
+ "m_#{safename}"
191
+ else
192
+ safename
193
+ end
194
+ end
195
+ module_function :safemethodname
196
+
197
+ def safemethodname?(name)
198
+ /\A[a-zA-Z_][a-zA-Z0-9_]*[=!?]?\z/ =~ name and !keyword?(name)
199
+ end
200
+ module_function :safemethodname?
201
+
202
+ def safevarname(name)
203
+ safename = uncapitalize(name.scan(/[a-zA-Z0-9_]+/).join('_'))
204
+ if /\A[a-z]/ !~ safename or keyword?(safename)
205
+ "v_#{safename}"
206
+ else
207
+ safename
208
+ end
209
+ end
210
+ module_function :safevarname
211
+
212
+ def safevarname?(name)
213
+ /\A[a-z_][a-zA-Z0-9_]*\z/ =~ name and !keyword?(name)
214
+ end
215
+ module_function :safevarname?
216
+
217
+ def keyword?(word)
218
+ KEYWORDS.key?(word)
219
+ end
220
+ module_function :keyword?
221
+
222
+ def constant?(word)
223
+ CONSTANTS.key?(word)
224
+ end
225
+ module_function :constant?
226
+
227
+ def format(str, indent = nil)
228
+ str = trim_eol(str)
229
+ str = trim_indent(str)
230
+ if indent
231
+ str.to_s.gsub(/^/, " " * indent)
232
+ else
233
+ str
234
+ end
235
+ end
236
+
237
+ private
238
+
239
+ def trim_eol(str)
240
+ str = str.lines if str.respond_to?(:lines) # RubyJedi: compatible with Ruby 1.8.6 and above
241
+ str.collect { |line|
242
+ line.sub(/\r?\n\z/, "") + "\n"
243
+ }.join
244
+ end
245
+
246
+ def trim_indent(str)
247
+ indent = nil
248
+ str = str.lines if str.respond_to?(:lines) # RubyJedi: compatible with Ruby 1.8.6 and above
249
+ str = str.collect { |line| untab(line) }.join
250
+ str = str.lines if str.respond_to?(:lines) # RubyJedi: compatible with Ruby 1.8.6 and above
251
+ str.each do |line|
252
+ head = line.index(/\S/)
253
+ if !head.nil? and (indent.nil? or head < indent)
254
+ indent = head
255
+ end
256
+ end
257
+ return str unless indent
258
+ str.collect { |line|
259
+ line.sub(/^ {0,#{indent}}/, "")
260
+ }.join
261
+ end
262
+
263
+ def untab(line, ts = 8)
264
+ while pos = line.index(/\t/)
265
+ line = line.sub(/\t/, " " * (ts - (pos % ts)))
266
+ end
267
+ line
268
+ end
269
+
270
+ def dump_emptyline
271
+ "\n"
272
+ end
273
+ end
274
+
275
+
276
+ end
277
+ end
@@ -0,0 +1,71 @@
1
+ # encoding: UTF-8
2
+ # XSD4R - Generating method definition code
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'xsd/codegen/gensupport'
11
+ require 'xsd/codegen/commentdef'
12
+
13
+
14
+ module XSD
15
+ module CodeGen
16
+
17
+
18
+ class MethodDef
19
+ include GenSupport
20
+ include CommentDef
21
+
22
+ attr_accessor :definition
23
+
24
+ def initialize(name, *params)
25
+ klass, mname = name.split('.', 2)
26
+ if mname.nil?
27
+ mname, klass = klass, mname
28
+ end
29
+ unless safemethodname?(mname)
30
+ raise ArgumentError.new("name '#{name}' seems to be unsafe")
31
+ end
32
+ if klass and klass != 'self' and !safeconstname(klass)
33
+ raise ArgumentError.new("name '#{name}' seems to be unsafe")
34
+ end
35
+ @name = name
36
+ @params = params
37
+ @comment = nil
38
+ @definition = yield if block_given?
39
+ end
40
+
41
+ def dump
42
+ buf = ""
43
+ buf << dump_comment if @comment
44
+ buf << dump_method_def
45
+ buf << dump_definition if @definition and !@definition.empty?
46
+ buf << dump_method_def_end
47
+ buf
48
+ end
49
+
50
+ private
51
+
52
+ def dump_method_def
53
+ if @params.empty?
54
+ format("def #{@name}")
55
+ else
56
+ format("def #{@name}(#{@params.join(", ")})")
57
+ end
58
+ end
59
+
60
+ def dump_method_def_end
61
+ format("end")
62
+ end
63
+
64
+ def dump_definition
65
+ format(@definition, 2)
66
+ end
67
+ end
68
+
69
+
70
+ end
71
+ end
@@ -0,0 +1,209 @@
1
+ # encoding: UTF-8
2
+ # XSD4R - Generating module definition code
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'xsd/codegen/gensupport'
11
+ require 'xsd/codegen/methoddef'
12
+ require 'xsd/codegen/commentdef'
13
+
14
+
15
+ module XSD
16
+ module CodeGen
17
+
18
+
19
+ class ModuleDef
20
+ include GenSupport
21
+ include CommentDef
22
+
23
+ attr_reader :name
24
+ attr_reader :innermodule
25
+
26
+ def initialize(name)
27
+ @name = name
28
+ @comment = nil
29
+ @const = []
30
+ @code = []
31
+ @requirepath = []
32
+ @methoddef = []
33
+ @innermodule = []
34
+ end
35
+
36
+ def def_require(path)
37
+ @requirepath << path
38
+ end
39
+
40
+ def def_const(const, value)
41
+ unless safeconstname?(const)
42
+ raise ArgumentError.new("#{const} seems to be unsafe")
43
+ end
44
+ @const << [const, value]
45
+ end
46
+
47
+ def def_code(code)
48
+ @code << code
49
+ end
50
+
51
+ def def_method(name, *params)
52
+ add_method(MethodDef.new(name, *params) { yield if block_given? }, :public)
53
+ end
54
+ alias def_publicmethod def_method
55
+
56
+ def def_protectedmethod(name, *params)
57
+ add_method(MethodDef.new(name, *params) { yield if block_given? },
58
+ :protected)
59
+ end
60
+
61
+ def def_privatemethod(name, *params)
62
+ add_method(MethodDef.new(name, *params) { yield if block_given? }, :private)
63
+ end
64
+
65
+ def add_method(m, visibility = :public)
66
+ @methoddef << [visibility, m]
67
+ end
68
+
69
+ def dump
70
+ buf = ""
71
+ unless @requirepath.empty?
72
+ buf << dump_requirepath
73
+ end
74
+ buf << dump_emptyline unless buf.empty?
75
+ package = @name.split(/::/)[0..-2]
76
+ buf << dump_package_def(package) unless package.empty?
77
+ buf << dump_comment if @comment
78
+ buf << dump_module_def
79
+ spacer = false
80
+ unless @const.empty?
81
+ buf << dump_emptyline if spacer
82
+ spacer = true
83
+ buf << dump_const
84
+ end
85
+ unless @innermodule.empty?
86
+ buf << dump_emptyline # always add 1 empty line
87
+ spacer = true
88
+ buf << dump_innermodule
89
+ end
90
+ unless @code.empty?
91
+ buf << dump_emptyline if spacer
92
+ spacer = true
93
+ buf << dump_code
94
+ end
95
+ unless @methoddef.empty?
96
+ buf << dump_emptyline if spacer
97
+ spacer = true
98
+ buf << dump_methods
99
+ end
100
+ buf << dump_module_def_end
101
+ buf << dump_package_def_end(package) unless package.empty?
102
+ buf.gsub(/^\s+$/, '')
103
+ end
104
+
105
+ private
106
+
107
+ def dump_requirepath
108
+ format(
109
+ @requirepath.collect { |path|
110
+ %Q(require '#{path}')
111
+ }.join("\n")
112
+ )
113
+ end
114
+
115
+ def dump_const
116
+ dump_static(
117
+ @const.sort.collect { |var, value|
118
+ %Q(#{var} = #{dump_value(value)})
119
+ }.join("\n")
120
+ )
121
+ end
122
+
123
+ def dump_innermodule
124
+ dump_static(
125
+ @innermodule.collect { |moduledef|
126
+ moduledef.dump
127
+ }.join("\n")
128
+ )
129
+ end
130
+
131
+ def dump_code
132
+ dump_static(@code.join("\n"))
133
+ end
134
+
135
+ def dump_static(str)
136
+ format(str, 2)
137
+ end
138
+
139
+ def dump_methods
140
+ methods = {}
141
+ @methoddef.each do |visibility, method|
142
+ (methods[visibility] ||= []) << method
143
+ end
144
+ str = ""
145
+ [:public, :protected, :private].each do |visibility|
146
+ if methods[visibility]
147
+ str << "\n" unless str.empty?
148
+ str << visibility.to_s << "\n\n" unless visibility == :public
149
+ str << methods[visibility].collect { |m| format(m.dump, 2) }.join("\n")
150
+ end
151
+ end
152
+ str
153
+ end
154
+
155
+ def dump_value(value)
156
+ if value.respond_to?(:to_src)
157
+ value.to_src
158
+ else
159
+ value
160
+ end
161
+ end
162
+
163
+ def dump_package_def(package)
164
+ format(package.collect { |ele| "module #{ele}" }.join("; ")) + "\n\n"
165
+ end
166
+
167
+ def dump_package_def_end(package)
168
+ "\n\n" + format(package.collect { |ele| "end" }.join("; "))
169
+ end
170
+
171
+ def dump_module_def
172
+ name = @name.to_s.split(/::/)
173
+ format("module #{name.last}")
174
+ end
175
+
176
+ def dump_module_def_end
177
+ format("end")
178
+ end
179
+ end
180
+
181
+
182
+ end
183
+ end
184
+
185
+
186
+ if __FILE__ == $0
187
+ require 'xsd/codegen/moduledef'
188
+ include XSD::CodeGen
189
+ m = ModuleDef.new("Foo::Bar::HobbitName")
190
+ m.def_require("foo/bar")
191
+ m.def_require("baz")
192
+ m.comment = <<-EOD
193
+ foo
194
+ bar
195
+ baz
196
+ EOD
197
+ m.def_method("foo") do
198
+ <<-EOD
199
+ foo.bar = 1
200
+ baz.each do |ele|
201
+ ele + 1
202
+ end
203
+ EOD
204
+ end
205
+ m.def_method("baz", "qux")
206
+ #m.def_protectedmethod("aaa")
207
+ m.def_privatemethod("bbb")
208
+ puts m.dump
209
+ end
@@ -0,0 +1,13 @@
1
+ # encoding: UTF-8
2
+ # XSD4R - Generating code library
3
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
4
+
5
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
6
+ # redistribute it and/or modify it under the same terms of Ruby's license;
7
+ # either the dual license version in 2003, or any later version.
8
+
9
+
10
+ require 'xsd/codegen/gensupport'
11
+ require 'xsd/codegen/moduledef'
12
+ require 'xsd/codegen/classdef'
13
+ require 'xsd/codegen/methoddef'