reidiculous-actionwebservice-client 3.0.4

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 (179) hide show
  1. data/CHANGELOG +320 -0
  2. data/MIT-LICENSE +21 -0
  3. data/README +381 -0
  4. data/Rakefile +180 -0
  5. data/TODO +32 -0
  6. data/lib/action_web_service.rb +71 -0
  7. data/lib/action_web_service/api.rb +297 -0
  8. data/lib/action_web_service/base.rb +38 -0
  9. data/lib/action_web_service/casting.rb +149 -0
  10. data/lib/action_web_service/client.rb +3 -0
  11. data/lib/action_web_service/client/base.rb +28 -0
  12. data/lib/action_web_service/client/soap_client.rb +113 -0
  13. data/lib/action_web_service/client/xmlrpc_client.rb +58 -0
  14. data/lib/action_web_service/container.rb +3 -0
  15. data/lib/action_web_service/container/action_controller_container.rb +93 -0
  16. data/lib/action_web_service/container/delegated_container.rb +86 -0
  17. data/lib/action_web_service/container/direct_container.rb +69 -0
  18. data/lib/action_web_service/dispatcher.rb +2 -0
  19. data/lib/action_web_service/dispatcher/abstract.rb +207 -0
  20. data/lib/action_web_service/dispatcher/action_controller_dispatcher.rb +379 -0
  21. data/lib/action_web_service/invocation.rb +202 -0
  22. data/lib/action_web_service/protocol.rb +4 -0
  23. data/lib/action_web_service/protocol/abstract.rb +115 -0
  24. data/lib/action_web_service/protocol/discovery.rb +37 -0
  25. data/lib/action_web_service/protocol/soap_protocol.rb +176 -0
  26. data/lib/action_web_service/protocol/soap_protocol/marshaler.rb +242 -0
  27. data/lib/action_web_service/protocol/xmlrpc_protocol.rb +122 -0
  28. data/lib/action_web_service/scaffolding.rb +281 -0
  29. data/lib/action_web_service/soap/attachment.rb +107 -0
  30. data/lib/action_web_service/soap/baseData.rb +942 -0
  31. data/lib/action_web_service/soap/element.rb +258 -0
  32. data/lib/action_web_service/soap/encodingstyle/aspDotNetHandler.rb +213 -0
  33. data/lib/action_web_service/soap/encodingstyle/handler.rb +100 -0
  34. data/lib/action_web_service/soap/encodingstyle/literalHandler.rb +226 -0
  35. data/lib/action_web_service/soap/encodingstyle/soapHandler.rb +582 -0
  36. data/lib/action_web_service/soap/generator.rb +268 -0
  37. data/lib/action_web_service/soap/header/handler.rb +57 -0
  38. data/lib/action_web_service/soap/header/handlerset.rb +70 -0
  39. data/lib/action_web_service/soap/header/simplehandler.rb +44 -0
  40. data/lib/action_web_service/soap/httpconfigloader.rb +119 -0
  41. data/lib/action_web_service/soap/mapping.rb +10 -0
  42. data/lib/action_web_service/soap/mapping/factory.rb +355 -0
  43. data/lib/action_web_service/soap/mapping/mapping.rb +381 -0
  44. data/lib/action_web_service/soap/mapping/registry.rb +541 -0
  45. data/lib/action_web_service/soap/mapping/rubytypeFactory.rb +475 -0
  46. data/lib/action_web_service/soap/mapping/typeMap.rb +50 -0
  47. data/lib/action_web_service/soap/mapping/wsdlencodedregistry.rb +280 -0
  48. data/lib/action_web_service/soap/mapping/wsdlliteralregistry.rb +418 -0
  49. data/lib/action_web_service/soap/marshal.rb +59 -0
  50. data/lib/action_web_service/soap/mimemessage.rb +240 -0
  51. data/lib/action_web_service/soap/netHttpClient.rb +190 -0
  52. data/lib/action_web_service/soap/parser.rb +251 -0
  53. data/lib/action_web_service/soap/processor.rb +66 -0
  54. data/lib/action_web_service/soap/property.rb +333 -0
  55. data/lib/action_web_service/soap/rpc/cgistub.rb +206 -0
  56. data/lib/action_web_service/soap/rpc/driver.rb +254 -0
  57. data/lib/action_web_service/soap/rpc/element.rb +325 -0
  58. data/lib/action_web_service/soap/rpc/httpserver.rb +129 -0
  59. data/lib/action_web_service/soap/rpc/proxy.rb +497 -0
  60. data/lib/action_web_service/soap/rpc/router.rb +594 -0
  61. data/lib/action_web_service/soap/rpc/rpc.rb +25 -0
  62. data/lib/action_web_service/soap/rpc/soaplet.rb +162 -0
  63. data/lib/action_web_service/soap/rpc/standaloneServer.rb +43 -0
  64. data/lib/action_web_service/soap/soap.rb +140 -0
  65. data/lib/action_web_service/soap/streamHandler.rb +229 -0
  66. data/lib/action_web_service/soap/wsdlDriver.rb +575 -0
  67. data/lib/action_web_service/struct.rb +64 -0
  68. data/lib/action_web_service/support/class_inheritable_options.rb +28 -0
  69. data/lib/action_web_service/support/signature_types.rb +227 -0
  70. data/lib/action_web_service/test_invoke.rb +110 -0
  71. data/lib/action_web_service/version.rb +9 -0
  72. data/lib/action_web_service/wsdl/binding.rb +65 -0
  73. data/lib/action_web_service/wsdl/data.rb +64 -0
  74. data/lib/action_web_service/wsdl/definitions.rb +250 -0
  75. data/lib/action_web_service/wsdl/documentation.rb +32 -0
  76. data/lib/action_web_service/wsdl/import.rb +80 -0
  77. data/lib/action_web_service/wsdl/importer.rb +38 -0
  78. data/lib/action_web_service/wsdl/info.rb +39 -0
  79. data/lib/action_web_service/wsdl/message.rb +54 -0
  80. data/lib/action_web_service/wsdl/operation.rb +130 -0
  81. data/lib/action_web_service/wsdl/operationBinding.rb +108 -0
  82. data/lib/action_web_service/wsdl/param.rb +85 -0
  83. data/lib/action_web_service/wsdl/parser.rb +163 -0
  84. data/lib/action_web_service/wsdl/part.rb +52 -0
  85. data/lib/action_web_service/wsdl/port.rb +84 -0
  86. data/lib/action_web_service/wsdl/portType.rb +73 -0
  87. data/lib/action_web_service/wsdl/service.rb +61 -0
  88. data/lib/action_web_service/wsdl/soap/address.rb +40 -0
  89. data/lib/action_web_service/wsdl/soap/binding.rb +49 -0
  90. data/lib/action_web_service/wsdl/soap/body.rb +56 -0
  91. data/lib/action_web_service/wsdl/soap/cgiStubCreator.rb +76 -0
  92. data/lib/action_web_service/wsdl/soap/classDefCreator.rb +314 -0
  93. data/lib/action_web_service/wsdl/soap/classDefCreatorSupport.rb +126 -0
  94. data/lib/action_web_service/wsdl/soap/clientSkeltonCreator.rb +78 -0
  95. data/lib/action_web_service/wsdl/soap/complexType.rb +161 -0
  96. data/lib/action_web_service/wsdl/soap/data.rb +42 -0
  97. data/lib/action_web_service/wsdl/soap/definitions.rb +149 -0
  98. data/lib/action_web_service/wsdl/soap/driverCreator.rb +95 -0
  99. data/lib/action_web_service/wsdl/soap/element.rb +28 -0
  100. data/lib/action_web_service/wsdl/soap/fault.rb +56 -0
  101. data/lib/action_web_service/wsdl/soap/header.rb +86 -0
  102. data/lib/action_web_service/wsdl/soap/headerfault.rb +56 -0
  103. data/lib/action_web_service/wsdl/soap/mappingRegistryCreator.rb +92 -0
  104. data/lib/action_web_service/wsdl/soap/methodDefCreator.rb +228 -0
  105. data/lib/action_web_service/wsdl/soap/operation.rb +122 -0
  106. data/lib/action_web_service/wsdl/soap/servantSkeltonCreator.rb +67 -0
  107. data/lib/action_web_service/wsdl/soap/standaloneServerStubCreator.rb +85 -0
  108. data/lib/action_web_service/wsdl/soap/wsdl2ruby.rb +176 -0
  109. data/lib/action_web_service/wsdl/types.rb +43 -0
  110. data/lib/action_web_service/wsdl/wsdl.rb +23 -0
  111. data/lib/action_web_service/wsdl/xmlSchema/all.rb +69 -0
  112. data/lib/action_web_service/wsdl/xmlSchema/annotation.rb +34 -0
  113. data/lib/action_web_service/wsdl/xmlSchema/any.rb +56 -0
  114. data/lib/action_web_service/wsdl/xmlSchema/attribute.rb +127 -0
  115. data/lib/action_web_service/wsdl/xmlSchema/choice.rb +69 -0
  116. data/lib/action_web_service/wsdl/xmlSchema/complexContent.rb +92 -0
  117. data/lib/action_web_service/wsdl/xmlSchema/complexType.rb +139 -0
  118. data/lib/action_web_service/wsdl/xmlSchema/content.rb +96 -0
  119. data/lib/action_web_service/wsdl/xmlSchema/data.rb +80 -0
  120. data/lib/action_web_service/wsdl/xmlSchema/element.rb +154 -0
  121. data/lib/action_web_service/wsdl/xmlSchema/enumeration.rb +36 -0
  122. data/lib/action_web_service/wsdl/xmlSchema/import.rb +65 -0
  123. data/lib/action_web_service/wsdl/xmlSchema/importer.rb +87 -0
  124. data/lib/action_web_service/wsdl/xmlSchema/include.rb +54 -0
  125. data/lib/action_web_service/wsdl/xmlSchema/length.rb +35 -0
  126. data/lib/action_web_service/wsdl/xmlSchema/parser.rb +166 -0
  127. data/lib/action_web_service/wsdl/xmlSchema/pattern.rb +36 -0
  128. data/lib/action_web_service/wsdl/xmlSchema/schema.rb +143 -0
  129. data/lib/action_web_service/wsdl/xmlSchema/sequence.rb +69 -0
  130. data/lib/action_web_service/wsdl/xmlSchema/simpleContent.rb +65 -0
  131. data/lib/action_web_service/wsdl/xmlSchema/simpleExtension.rb +54 -0
  132. data/lib/action_web_service/wsdl/xmlSchema/simpleRestriction.rb +73 -0
  133. data/lib/action_web_service/wsdl/xmlSchema/simpleType.rb +73 -0
  134. data/lib/action_web_service/wsdl/xmlSchema/unique.rb +34 -0
  135. data/lib/action_web_service/wsdl/xmlSchema/xsd2ruby.rb +107 -0
  136. data/lib/action_web_service/xsd/charset.rb +187 -0
  137. data/lib/action_web_service/xsd/codegen.rb +12 -0
  138. data/lib/action_web_service/xsd/codegen/classdef.rb +203 -0
  139. data/lib/action_web_service/xsd/codegen/commentdef.rb +34 -0
  140. data/lib/action_web_service/xsd/codegen/gensupport.rb +166 -0
  141. data/lib/action_web_service/xsd/codegen/methoddef.rb +63 -0
  142. data/lib/action_web_service/xsd/codegen/moduledef.rb +191 -0
  143. data/lib/action_web_service/xsd/datatypes.rb +1269 -0
  144. data/lib/action_web_service/xsd/datatypes1999.rb +20 -0
  145. data/lib/action_web_service/xsd/iconvcharset.rb +33 -0
  146. data/lib/action_web_service/xsd/mapping.rb +42 -0
  147. data/lib/action_web_service/xsd/namedelements.rb +95 -0
  148. data/lib/action_web_service/xsd/ns.rb +140 -0
  149. data/lib/action_web_service/xsd/qname.rb +78 -0
  150. data/lib/action_web_service/xsd/xmlparser.rb +61 -0
  151. data/lib/action_web_service/xsd/xmlparser/parser.rb +96 -0
  152. data/lib/action_web_service/xsd/xmlparser/rexmlparser.rb +54 -0
  153. data/lib/action_web_service/xsd/xmlparser/xmlparser.rb +50 -0
  154. data/lib/action_web_service/xsd/xmlparser/xmlscanner.rb +147 -0
  155. data/lib/actionwebservice.rb +1 -0
  156. data/setup.rb +1379 -0
  157. data/test/abstract_client.rb +183 -0
  158. data/test/abstract_dispatcher.rb +548 -0
  159. data/test/abstract_unit.rb +45 -0
  160. data/test/api_test.rb +103 -0
  161. data/test/apis/auto_load_api.rb +3 -0
  162. data/test/apis/broken_auto_load_api.rb +2 -0
  163. data/test/base_test.rb +42 -0
  164. data/test/casting_test.rb +95 -0
  165. data/test/client_soap_test.rb +156 -0
  166. data/test/client_xmlrpc_test.rb +153 -0
  167. data/test/container_test.rb +73 -0
  168. data/test/dispatcher_action_controller_soap_test.rb +139 -0
  169. data/test/dispatcher_action_controller_xmlrpc_test.rb +59 -0
  170. data/test/fixtures/db_definitions/mysql.sql +8 -0
  171. data/test/fixtures/db_definitions/sqlite3.sql +8 -0
  172. data/test/fixtures/users.yml +12 -0
  173. data/test/gencov +3 -0
  174. data/test/invocation_test.rb +185 -0
  175. data/test/run +6 -0
  176. data/test/scaffolded_controller_test.rb +146 -0
  177. data/test/struct_test.rb +52 -0
  178. data/test/test_invoke_test.rb +112 -0
  179. metadata +265 -0
@@ -0,0 +1,34 @@
1
+ # XSD4R - Generating comment definition code
2
+ # Copyright (C) 2004 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 'action_web_service/xsd/codegen/gensupport'
10
+
11
+
12
+ module XSD
13
+ module CodeGen
14
+
15
+
16
+ module CommentDef
17
+ include GenSupport
18
+
19
+ attr_accessor :comment
20
+
21
+ private
22
+
23
+ def dump_comment
24
+ if /\A#/ =~ @comment
25
+ format(@comment)
26
+ else
27
+ format(@comment).gsub(/^/, '# ')
28
+ end
29
+ end
30
+ end
31
+
32
+
33
+ end
34
+ end
@@ -0,0 +1,166 @@
1
+ # XSD4R - Code generation support
2
+ # Copyright (C) 2004, 2005 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
+ module XSD
10
+ module CodeGen
11
+
12
+ # from the file 'keywords' in 1.9.
13
+ KEYWORD = {}
14
+ %w(
15
+ __LINE__
16
+ __FILE__
17
+ BEGIN
18
+ END
19
+ alias
20
+ and
21
+ begin
22
+ break
23
+ case
24
+ class
25
+ def
26
+ defined?
27
+ do
28
+ else
29
+ elsif
30
+ end
31
+ ensure
32
+ false
33
+ for
34
+ if
35
+ in
36
+ module
37
+ next
38
+ nil
39
+ not
40
+ or
41
+ redo
42
+ rescue
43
+ retry
44
+ return
45
+ self
46
+ super
47
+ then
48
+ true
49
+ undef
50
+ unless
51
+ until
52
+ when
53
+ while
54
+ yield
55
+ ).each { |k| KEYWORD[k] = nil }
56
+
57
+ module GenSupport
58
+ def capitalize(target)
59
+ target.sub(/^([a-z])/) { $1.tr!('[a-z]', '[A-Z]') }
60
+ end
61
+ module_function :capitalize
62
+
63
+ def uncapitalize(target)
64
+ target.sub(/^([A-Z])/) { $1.tr!('[A-Z]', '[a-z]') }
65
+ end
66
+ module_function :uncapitalize
67
+
68
+ def safeconstname(name)
69
+ safename = name.scan(/[a-zA-Z0-9_]+/).collect { |ele|
70
+ GenSupport.capitalize(ele)
71
+ }.join
72
+ if /^[A-Z]/ !~ safename or keyword?(safename)
73
+ safename = "C_#{safename}"
74
+ end
75
+ safename
76
+ end
77
+ module_function :safeconstname
78
+
79
+ def safeconstname?(name)
80
+ /\A[A-Z][a-zA-Z0-9_]*\z/ =~ name and !keyword?(name)
81
+ end
82
+ module_function :safeconstname?
83
+
84
+ def safemethodname(name)
85
+ safename = name.scan(/[a-zA-Z0-9_]+/).join('_')
86
+ safename = uncapitalize(safename)
87
+ if /^[a-z]/ !~ safename
88
+ safename = "m_#{safename}"
89
+ end
90
+ safename
91
+ end
92
+ module_function :safemethodname
93
+
94
+ def safemethodname?(name)
95
+ /\A[a-zA-Z_][a-zA-Z0-9_]*[=!?]?\z/ =~ name
96
+ end
97
+ module_function :safemethodname?
98
+
99
+ def safevarname(name)
100
+ safename = uncapitalize(name.scan(/[a-zA-Z0-9_]+/).join('_'))
101
+ if /^[a-z]/ !~ safename or keyword?(safename)
102
+ "v_#{safename}"
103
+ else
104
+ safename
105
+ end
106
+ end
107
+ module_function :safevarname
108
+
109
+ def safevarname?(name)
110
+ /\A[a-z_][a-zA-Z0-9_]*\z/ =~ name and !keyword?(name)
111
+ end
112
+ module_function :safevarname?
113
+
114
+ def keyword?(word)
115
+ KEYWORD.key?(word)
116
+ end
117
+ module_function :keyword?
118
+
119
+ def format(str, indent = nil)
120
+ str = trim_eol(str)
121
+ str = trim_indent(str)
122
+ if indent
123
+ str.gsub(/^/, " " * indent)
124
+ else
125
+ str
126
+ end
127
+ end
128
+
129
+ private
130
+
131
+ def trim_eol(str)
132
+ str.collect { |line|
133
+ line.sub(/\r?\n\z/, "") + "\n"
134
+ }.join
135
+ end
136
+
137
+ def trim_indent(str)
138
+ indent = nil
139
+ str = str.collect { |line| untab(line) }.join
140
+ str.each do |line|
141
+ head = line.index(/\S/)
142
+ if !head.nil? and (indent.nil? or head < indent)
143
+ indent = head
144
+ end
145
+ end
146
+ return str unless indent
147
+ str.collect { |line|
148
+ line.sub(/^ {0,#{indent}}/, "")
149
+ }.join
150
+ end
151
+
152
+ def untab(line, ts = 8)
153
+ while pos = line.index(/\t/)
154
+ line = line.sub(/\t/, " " * (ts - (pos % ts)))
155
+ end
156
+ line
157
+ end
158
+
159
+ def dump_emptyline
160
+ "\n"
161
+ end
162
+ end
163
+
164
+
165
+ end
166
+ end
@@ -0,0 +1,63 @@
1
+ # XSD4R - Generating method definition code
2
+ # Copyright (C) 2004 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 'action_web_service/xsd/codegen/gensupport'
10
+ require 'action_web_service/xsd/codegen/commentdef'
11
+
12
+
13
+ module XSD
14
+ module CodeGen
15
+
16
+
17
+ class MethodDef
18
+ include GenSupport
19
+ include CommentDef
20
+
21
+ attr_accessor :definition
22
+
23
+ def initialize(name, *params)
24
+ unless safemethodname?(name)
25
+ raise ArgumentError.new("name '#{name}' seems to be unsafe")
26
+ end
27
+ @name = name
28
+ @params = params
29
+ @comment = nil
30
+ @definition = yield if block_given?
31
+ end
32
+
33
+ def dump
34
+ buf = ""
35
+ buf << dump_comment if @comment
36
+ buf << dump_method_def
37
+ buf << dump_definition if @definition and !@definition.empty?
38
+ buf << dump_method_def_end
39
+ buf
40
+ end
41
+
42
+ private
43
+
44
+ def dump_method_def
45
+ if @params.empty?
46
+ format("def #{@name}")
47
+ else
48
+ format("def #{@name}(#{@params.join(", ")})")
49
+ end
50
+ end
51
+
52
+ def dump_method_def_end
53
+ format("end")
54
+ end
55
+
56
+ def dump_definition
57
+ format(@definition, 2)
58
+ end
59
+ end
60
+
61
+
62
+ end
63
+ end
@@ -0,0 +1,191 @@
1
+ # XSD4R - Generating module definition code
2
+ # Copyright (C) 2004 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 'action_web_service/xsd/codegen/gensupport'
10
+ require 'action_web_service/xsd/codegen/methoddef'
11
+ require 'action_web_service/xsd/codegen/commentdef'
12
+
13
+
14
+ module XSD
15
+ module CodeGen
16
+
17
+
18
+ class ModuleDef
19
+ include GenSupport
20
+ include CommentDef
21
+
22
+ def initialize(name)
23
+ @name = name
24
+ @comment = nil
25
+ @const = []
26
+ @code = []
27
+ @requirepath = []
28
+ @methoddef = []
29
+ end
30
+
31
+ def def_require(path)
32
+ @requirepath << path
33
+ end
34
+
35
+ def def_const(const, value)
36
+ unless safeconstname?(const)
37
+ raise ArgumentError.new("#{const} seems to be unsafe")
38
+ end
39
+ @const << [const, value]
40
+ end
41
+
42
+ def def_code(code)
43
+ @code << code
44
+ end
45
+
46
+ def def_method(name, *params)
47
+ add_method(MethodDef.new(name, *params) { yield if block_given? }, :public)
48
+ end
49
+ alias def_publicmethod def_method
50
+
51
+ def def_protectedmethod(name, *params)
52
+ add_method(MethodDef.new(name, *params) { yield if block_given? },
53
+ :protected)
54
+ end
55
+
56
+ def def_privatemethod(name, *params)
57
+ add_method(MethodDef.new(name, *params) { yield if block_given? }, :private)
58
+ end
59
+
60
+ def add_method(m, visibility = :public)
61
+ @methoddef << [visibility, m]
62
+ end
63
+
64
+ def dump
65
+ buf = ""
66
+ unless @requirepath.empty?
67
+ buf << dump_requirepath
68
+ end
69
+ buf << dump_emptyline unless buf.empty?
70
+ package = @name.split(/::/)[0..-2]
71
+ buf << dump_package_def(package) unless package.empty?
72
+ buf << dump_comment if @comment
73
+ buf << dump_module_def
74
+ spacer = false
75
+ unless @const.empty?
76
+ buf << dump_emptyline if spacer
77
+ spacer = true
78
+ buf << dump_const
79
+ end
80
+ unless @code.empty?
81
+ buf << dump_emptyline if spacer
82
+ spacer = true
83
+ buf << dump_code
84
+ end
85
+ unless @methoddef.empty?
86
+ buf << dump_emptyline if spacer
87
+ spacer = true
88
+ buf << dump_methods
89
+ end
90
+ buf << dump_module_def_end
91
+ buf << dump_package_def_end(package) unless package.empty?
92
+ buf.gsub(/^\s+$/, '')
93
+ end
94
+
95
+ private
96
+
97
+ def dump_requirepath
98
+ format(
99
+ @requirepath.collect { |path|
100
+ %Q(require '#{path}')
101
+ }.join("\n")
102
+ )
103
+ end
104
+
105
+ def dump_const
106
+ dump_static(
107
+ @const.sort.collect { |var, value|
108
+ %Q(#{var} = #{dump_value(value)})
109
+ }.join("\n")
110
+ )
111
+ end
112
+
113
+ def dump_code
114
+ dump_static(@code.join("\n"))
115
+ end
116
+
117
+ def dump_static(str)
118
+ format(str, 2)
119
+ end
120
+
121
+ def dump_methods
122
+ methods = {}
123
+ @methoddef.each do |visibility, method|
124
+ (methods[visibility] ||= []) << method
125
+ end
126
+ str = ""
127
+ [:public, :protected, :private].each do |visibility|
128
+ if methods[visibility]
129
+ str << "\n" unless str.empty?
130
+ str << visibility.to_s << "\n\n" unless visibility == :public
131
+ str << methods[visibility].collect { |m| format(m.dump, 2) }.join("\n")
132
+ end
133
+ end
134
+ str
135
+ end
136
+
137
+ def dump_value(value)
138
+ if value.respond_to?(:to_src)
139
+ value.to_src
140
+ else
141
+ value
142
+ end
143
+ end
144
+
145
+ def dump_package_def(package)
146
+ format(package.collect { |ele| "module #{ele}" }.join("; ")) + "\n\n"
147
+ end
148
+
149
+ def dump_package_def_end(package)
150
+ "\n\n" + format(package.collect { |ele| "end" }.join("; "))
151
+ end
152
+
153
+ def dump_module_def
154
+ name = @name.to_s.split(/::/)
155
+ format("module #{name.last}")
156
+ end
157
+
158
+ def dump_module_def_end
159
+ format("end")
160
+ end
161
+ end
162
+
163
+
164
+ end
165
+ end
166
+
167
+
168
+ if __FILE__ == $0
169
+ require 'action_web_service/xsd/codegen/moduledef'
170
+ include XSD::CodeGen
171
+ m = ModuleDef.new("Foo::Bar::HobbitName")
172
+ m.def_require("foo/bar")
173
+ m.def_require("baz")
174
+ m.comment = <<-EOD
175
+ foo
176
+ bar
177
+ baz
178
+ EOD
179
+ m.def_method("foo") do
180
+ <<-EOD
181
+ foo.bar = 1
182
+ baz.each do |ele|
183
+ ele + 1
184
+ end
185
+ EOD
186
+ end
187
+ m.def_method("baz", "qux")
188
+ #m.def_protectedmethod("aaa")
189
+ m.def_privatemethod("bbb")
190
+ puts m.dump
191
+ end