soybean 1.0.0
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.
- data/.document +5 -0
- data/.rspec +1 -0
- data/Gemfile +15 -0
- data/Gemfile.lock +38 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +19 -0
- data/Rakefile +44 -0
- data/VERSION +1 -0
- data/bin/soybean +22 -0
- data/bin/xsd2ruby +90 -0
- data/lib/soybean.rb +11 -0
- data/lib/soybean/actions/generate_classes.rb +33 -0
- data/soybean.gemspec +236 -0
- data/spec/soybean_spec.rb +5 -0
- data/spec/spec_helper.rb +12 -0
- data/vendor/soap4r/soap/attachment.rb +109 -0
- data/vendor/soap4r/soap/attrproxy.rb +35 -0
- data/vendor/soap4r/soap/base_data.rb +1095 -0
- data/vendor/soap4r/soap/element.rb +278 -0
- data/vendor/soap4r/soap/encodingstyle/asp_dot_net_handler.rb +208 -0
- data/vendor/soap4r/soap/encodingstyle/handler.rb +121 -0
- data/vendor/soap4r/soap/encodingstyle/literal_handler.rb +196 -0
- data/vendor/soap4r/soap/encodingstyle/soap_handler.rb +560 -0
- data/vendor/soap4r/soap/filter.rb +14 -0
- data/vendor/soap4r/soap/filter/filterchain.rb +52 -0
- data/vendor/soap4r/soap/filter/handler.rb +32 -0
- data/vendor/soap4r/soap/filter/streamhandler.rb +30 -0
- data/vendor/soap4r/soap/generator.rb +299 -0
- data/vendor/soap4r/soap/header/handler.rb +62 -0
- data/vendor/soap4r/soap/header/handlerset.rb +71 -0
- data/vendor/soap4r/soap/header/mappinghandler.rb +48 -0
- data/vendor/soap4r/soap/header/simplehandler.rb +45 -0
- data/vendor/soap4r/soap/httpconfigloader.rb +140 -0
- data/vendor/soap4r/soap/mapping.rb +13 -0
- data/vendor/soap4r/soap/mapping/encodedregistry.rb +539 -0
- data/vendor/soap4r/soap/mapping/factory.rb +389 -0
- data/vendor/soap4r/soap/mapping/literalregistry.rb +392 -0
- data/vendor/soap4r/soap/mapping/mapping.rb +577 -0
- data/vendor/soap4r/soap/mapping/registry.rb +296 -0
- data/vendor/soap4r/soap/mapping/rubytype_factory.rb +446 -0
- data/vendor/soap4r/soap/mapping/schemadefinition.rb +171 -0
- data/vendor/soap4r/soap/mapping/type_map.rb +107 -0
- data/vendor/soap4r/soap/mapping/wsdlencodedregistry.rb +212 -0
- data/vendor/soap4r/soap/mapping/wsdlliteralregistry.rb +249 -0
- data/vendor/soap4r/soap/marshal.rb +60 -0
- data/vendor/soap4r/soap/mimemessage.rb +243 -0
- data/vendor/soap4r/soap/nestedexception.rb +43 -0
- data/vendor/soap4r/soap/net_http_client.rb +242 -0
- data/vendor/soap4r/soap/ns.rb +39 -0
- data/vendor/soap4r/soap/parser.rb +253 -0
- data/vendor/soap4r/soap/processor.rb +67 -0
- data/vendor/soap4r/soap/property.rb +340 -0
- data/vendor/soap4r/soap/proxy.rb +15 -0
- data/vendor/soap4r/soap/rpc/cgistub.rb +248 -0
- data/vendor/soap4r/soap/rpc/driver.rb +222 -0
- data/vendor/soap4r/soap/rpc/element.rb +375 -0
- data/vendor/soap4r/soap/rpc/httpserver.rb +143 -0
- data/vendor/soap4r/soap/rpc/method_def.rb +69 -0
- data/vendor/soap4r/soap/rpc/proxy.rb +573 -0
- data/vendor/soap4r/soap/rpc/router.rb +663 -0
- data/vendor/soap4r/soap/rpc/rpc.rb +26 -0
- data/vendor/soap4r/soap/rpc/soaplet.rb +201 -0
- data/vendor/soap4r/soap/rpc/standalone_server.rb +44 -0
- data/vendor/soap4r/soap/soap.rb +154 -0
- data/vendor/soap4r/soap/stream_handler.rb +302 -0
- data/vendor/soap4r/soap/version.rb +9 -0
- data/vendor/soap4r/soap/wsdl_driver.rb +165 -0
- data/vendor/soap4r/wsdl/binding.rb +66 -0
- data/vendor/soap4r/wsdl/data.rb +65 -0
- data/vendor/soap4r/wsdl/definitions.rb +237 -0
- data/vendor/soap4r/wsdl/documentation.rb +33 -0
- data/vendor/soap4r/wsdl/import.rb +81 -0
- data/vendor/soap4r/wsdl/importer.rb +39 -0
- data/vendor/soap4r/wsdl/info.rb +51 -0
- data/vendor/soap4r/wsdl/message.rb +55 -0
- data/vendor/soap4r/wsdl/operation.rb +152 -0
- data/vendor/soap4r/wsdl/operation_binding.rb +241 -0
- data/vendor/soap4r/wsdl/param.rb +94 -0
- data/vendor/soap4r/wsdl/parser.rb +165 -0
- data/vendor/soap4r/wsdl/part.rb +53 -0
- data/vendor/soap4r/wsdl/port.rb +67 -0
- data/vendor/soap4r/wsdl/port_type.rb +76 -0
- data/vendor/soap4r/wsdl/service.rb +62 -0
- data/vendor/soap4r/wsdl/soap/address.rb +41 -0
- data/vendor/soap4r/wsdl/soap/binding.rb +50 -0
- data/vendor/soap4r/wsdl/soap/body.rb +59 -0
- data/vendor/soap4r/wsdl/soap/cgi_stub_creator.rb +93 -0
- data/vendor/soap4r/wsdl/soap/class_def_creator.rb +437 -0
- data/vendor/soap4r/wsdl/soap/class_def_creator_support.rb +241 -0
- data/vendor/soap4r/wsdl/soap/class_name_creator.rb +55 -0
- data/vendor/soap4r/wsdl/soap/client_skelton_creator.rb +107 -0
- data/vendor/soap4r/wsdl/soap/complex_type.rb +174 -0
- data/vendor/soap4r/wsdl/soap/data.rb +43 -0
- data/vendor/soap4r/wsdl/soap/definitions.rb +201 -0
- data/vendor/soap4r/wsdl/soap/driver_creator.rb +121 -0
- data/vendor/soap4r/wsdl/soap/element.rb +34 -0
- data/vendor/soap4r/wsdl/soap/encoded_mapping_registry_creator.rb +74 -0
- data/vendor/soap4r/wsdl/soap/fault.rb +57 -0
- data/vendor/soap4r/wsdl/soap/header.rb +87 -0
- data/vendor/soap4r/wsdl/soap/headerfault.rb +57 -0
- data/vendor/soap4r/wsdl/soap/literal_mapping_registry_creator.rb +116 -0
- data/vendor/soap4r/wsdl/soap/mapping_registry_creator.rb +59 -0
- data/vendor/soap4r/wsdl/soap/mapping_registry_creator_support.rb +377 -0
- data/vendor/soap4r/wsdl/soap/method_def_creator.rb +200 -0
- data/vendor/soap4r/wsdl/soap/operation.rb +113 -0
- data/vendor/soap4r/wsdl/soap/servant_skelton_creator.rb +92 -0
- data/vendor/soap4r/wsdl/soap/servlet_stub_creator.rb +105 -0
- data/vendor/soap4r/wsdl/soap/standalone_server_stub_creator.rb +101 -0
- data/vendor/soap4r/wsdl/soap/wsdl2ruby.rb +226 -0
- data/vendor/soap4r/wsdl/types.rb +45 -0
- data/vendor/soap4r/wsdl/wsdl.rb +25 -0
- data/vendor/soap4r/wsdl/xml_schema/all.rb +25 -0
- data/vendor/soap4r/wsdl/xml_schema/annotation.rb +35 -0
- data/vendor/soap4r/wsdl/xml_schema/any.rb +62 -0
- data/vendor/soap4r/wsdl/xml_schema/any_attribute.rb +49 -0
- data/vendor/soap4r/wsdl/xml_schema/attribute.rb +105 -0
- data/vendor/soap4r/wsdl/xml_schema/attribute_group.rb +69 -0
- data/vendor/soap4r/wsdl/xml_schema/choice.rb +59 -0
- data/vendor/soap4r/wsdl/xml_schema/complex_content.rb +98 -0
- data/vendor/soap4r/wsdl/xml_schema/complex_extension.rb +120 -0
- data/vendor/soap4r/wsdl/xml_schema/complex_restriction.rb +105 -0
- data/vendor/soap4r/wsdl/xml_schema/complex_type.rb +194 -0
- data/vendor/soap4r/wsdl/xml_schema/content.rb +96 -0
- data/vendor/soap4r/wsdl/xml_schema/data.rb +117 -0
- data/vendor/soap4r/wsdl/xml_schema/element.rb +154 -0
- data/vendor/soap4r/wsdl/xml_schema/enumeration.rb +37 -0
- data/vendor/soap4r/wsdl/xml_schema/fractiondigits.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/group.rb +101 -0
- data/vendor/soap4r/wsdl/xml_schema/import.rb +54 -0
- data/vendor/soap4r/wsdl/xml_schema/import_handler.rb +46 -0
- data/vendor/soap4r/wsdl/xml_schema/importer.rb +103 -0
- data/vendor/soap4r/wsdl/xml_schema/include.rb +49 -0
- data/vendor/soap4r/wsdl/xml_schema/length.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/list.rb +49 -0
- data/vendor/soap4r/wsdl/xml_schema/maxexclusive.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/maxinclusive.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/maxlength.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/minexclusive.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/mininclusive.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/minlength.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/parser.rb +168 -0
- data/vendor/soap4r/wsdl/xml_schema/pattern.rb +37 -0
- data/vendor/soap4r/wsdl/xml_schema/ref.rb +34 -0
- data/vendor/soap4r/wsdl/xml_schema/schema.rb +179 -0
- data/vendor/soap4r/wsdl/xml_schema/sequence.rb +55 -0
- data/vendor/soap4r/wsdl/xml_schema/simple_content.rb +70 -0
- data/vendor/soap4r/wsdl/xml_schema/simple_extension.rb +63 -0
- data/vendor/soap4r/wsdl/xml_schema/simple_restriction.rb +133 -0
- data/vendor/soap4r/wsdl/xml_schema/simple_type.rb +88 -0
- data/vendor/soap4r/wsdl/xml_schema/totaldigits.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/union.rb +36 -0
- data/vendor/soap4r/wsdl/xml_schema/unique.rb +35 -0
- data/vendor/soap4r/wsdl/xml_schema/whitespace.rb +38 -0
- data/vendor/soap4r/wsdl/xml_schema/xsd2ruby.rb +176 -0
- data/vendor/soap4r/xsd/charset.rb +190 -0
- data/vendor/soap4r/xsd/codegen.rb +13 -0
- data/vendor/soap4r/xsd/codegen/classdef.rb +209 -0
- data/vendor/soap4r/xsd/codegen/commentdef.rb +35 -0
- data/vendor/soap4r/xsd/codegen/gensupport.rb +277 -0
- data/vendor/soap4r/xsd/codegen/methoddef.rb +71 -0
- data/vendor/soap4r/xsd/codegen/moduledef.rb +209 -0
- data/vendor/soap4r/xsd/datatypes.rb +1466 -0
- data/vendor/soap4r/xsd/datatypes1999.rb +21 -0
- data/vendor/soap4r/xsd/iconvcharset.rb +34 -0
- data/vendor/soap4r/xsd/mapping.rb +69 -0
- data/vendor/soap4r/xsd/namedelements.rb +133 -0
- data/vendor/soap4r/xsd/ns.rb +183 -0
- data/vendor/soap4r/xsd/qname.rb +80 -0
- data/vendor/soap4r/xsd/xmlparser.rb +77 -0
- data/vendor/soap4r/xsd/xmlparser/libxmlparser.rb +116 -0
- data/vendor/soap4r/xsd/xmlparser/parser.rb +101 -0
- data/vendor/soap4r/xsd/xmlparser/rexmlparser.rb +59 -0
- data/vendor/soap4r/xsd/xmlparser/xmlparser.rb +51 -0
- data/vendor/soap4r/xsd/xmlparser/xmlscanner.rb +150 -0
- metadata +316 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# encoding: ASCII-8BIT
|
|
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'
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# encoding: ASCII-8BIT
|
|
2
|
+
# XSD4R - Generating class 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/moduledef'
|
|
12
|
+
require 'xsd/codegen/methoddef'
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
module XSD
|
|
16
|
+
module CodeGen
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class ClassDef < ModuleDef
|
|
20
|
+
include GenSupport
|
|
21
|
+
|
|
22
|
+
def initialize(name, baseclass = nil)
|
|
23
|
+
super(name)
|
|
24
|
+
@baseclass = baseclass
|
|
25
|
+
@classvar = []
|
|
26
|
+
@attrdef = []
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def def_classvar(var, value)
|
|
30
|
+
var = var.sub(/\A@@/, "")
|
|
31
|
+
unless safevarname?(var)
|
|
32
|
+
raise ArgumentError.new("#{var} seems to be unsafe")
|
|
33
|
+
end
|
|
34
|
+
@classvar << [var, value]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def def_attr(attrname, writable = true, varname = nil)
|
|
38
|
+
unless safevarname?(varname || attrname)
|
|
39
|
+
raise ArgumentError.new("#{varname || attrname} seems to be unsafe")
|
|
40
|
+
end
|
|
41
|
+
@attrdef << [attrname, writable, varname]
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def dump
|
|
45
|
+
buf = ""
|
|
46
|
+
unless @requirepath.empty?
|
|
47
|
+
buf << dump_requirepath
|
|
48
|
+
end
|
|
49
|
+
buf << dump_emptyline unless buf.empty?
|
|
50
|
+
package = @name.split(/::/)[0..-2]
|
|
51
|
+
buf << dump_package_def(package) unless package.empty?
|
|
52
|
+
buf << dump_comment if @comment
|
|
53
|
+
buf << dump_class_def
|
|
54
|
+
spacer = false
|
|
55
|
+
unless @classvar.empty?
|
|
56
|
+
spacer = true
|
|
57
|
+
buf << dump_classvar
|
|
58
|
+
end
|
|
59
|
+
unless @const.empty?
|
|
60
|
+
buf << dump_emptyline if spacer
|
|
61
|
+
spacer = true
|
|
62
|
+
buf << dump_const
|
|
63
|
+
end
|
|
64
|
+
unless @innermodule.empty?
|
|
65
|
+
buf << dump_emptyline # always add 1 empty line
|
|
66
|
+
spacer = true
|
|
67
|
+
buf << dump_innermodule
|
|
68
|
+
end
|
|
69
|
+
unless @code.empty?
|
|
70
|
+
buf << dump_emptyline if spacer
|
|
71
|
+
spacer = true
|
|
72
|
+
buf << dump_code
|
|
73
|
+
end
|
|
74
|
+
unless @attrdef.empty?
|
|
75
|
+
buf << dump_emptyline if spacer
|
|
76
|
+
spacer = true
|
|
77
|
+
buf << dump_attributes
|
|
78
|
+
end
|
|
79
|
+
unless @methoddef.empty?
|
|
80
|
+
buf << dump_emptyline if spacer
|
|
81
|
+
spacer = true
|
|
82
|
+
buf << dump_methods
|
|
83
|
+
end
|
|
84
|
+
buf << dump_class_def_end
|
|
85
|
+
buf << dump_package_def_end(package) unless package.empty?
|
|
86
|
+
buf.gsub(/^\s+$/, '')
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
private
|
|
90
|
+
|
|
91
|
+
def dump_class_def
|
|
92
|
+
name = @name.to_s.split(/::/)
|
|
93
|
+
if @baseclass
|
|
94
|
+
format("class #{name.last} < #{@baseclass}")
|
|
95
|
+
else
|
|
96
|
+
format("class #{name.last}")
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def dump_class_def_end
|
|
101
|
+
str = format("end")
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def dump_classvar
|
|
105
|
+
dump_static(
|
|
106
|
+
@classvar.collect { |var, value|
|
|
107
|
+
%Q(@@#{var.sub(/^@@/, "")} = #{dump_value(value)})
|
|
108
|
+
}.join("\n")
|
|
109
|
+
)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def dump_attributes
|
|
113
|
+
str = ""
|
|
114
|
+
@attrdef.each do |attrname, writable, varname|
|
|
115
|
+
varname ||= attrname
|
|
116
|
+
if attrname == varname
|
|
117
|
+
str << format(dump_accessor(attrname, writable), 2)
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
@attrdef.each do |attrname, writable, varname|
|
|
121
|
+
varname ||= attrname
|
|
122
|
+
if attrname != varname
|
|
123
|
+
str << "\n" unless str.empty?
|
|
124
|
+
str << format(dump_attribute(attrname, writable, varname), 2)
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
str
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def dump_accessor(attrname, writable)
|
|
131
|
+
if writable
|
|
132
|
+
"attr_accessor :#{attrname}"
|
|
133
|
+
else
|
|
134
|
+
"attr_reader :#{attrname}"
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def dump_attribute(attrname, writable, varname)
|
|
139
|
+
str = nil
|
|
140
|
+
mr = MethodDef.new(attrname)
|
|
141
|
+
mr.definition = "@#{varname}"
|
|
142
|
+
str = mr.dump
|
|
143
|
+
if writable
|
|
144
|
+
mw = MethodDef.new(attrname + "=", 'value')
|
|
145
|
+
mw.definition = "@#{varname} = value"
|
|
146
|
+
str << "\n" + mw.dump
|
|
147
|
+
end
|
|
148
|
+
str
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
if __FILE__ == $0
|
|
158
|
+
require 'xsd/codegen/classdef'
|
|
159
|
+
include XSD::CodeGen
|
|
160
|
+
c = ClassDef.new("Foo::Bar::HobbitName", String)
|
|
161
|
+
c.def_require("foo/bar")
|
|
162
|
+
c.comment = <<-EOD
|
|
163
|
+
foo
|
|
164
|
+
bar
|
|
165
|
+
baz
|
|
166
|
+
EOD
|
|
167
|
+
c.def_const("FOO", 1)
|
|
168
|
+
c.def_classvar("@@foo", "var".dump)
|
|
169
|
+
c.def_classvar("baz", "1".dump)
|
|
170
|
+
c.def_attr("Foo", true, "foo")
|
|
171
|
+
c.def_attr("bar")
|
|
172
|
+
c.def_attr("baz", true)
|
|
173
|
+
c.def_attr("Foo2", true, "foo2")
|
|
174
|
+
c.def_attr("foo3", false, "foo3")
|
|
175
|
+
c.def_method("foo") do
|
|
176
|
+
<<-EOD
|
|
177
|
+
foo.bar = 1
|
|
178
|
+
\tbaz.each do |ele|
|
|
179
|
+
\t ele
|
|
180
|
+
end
|
|
181
|
+
EOD
|
|
182
|
+
end
|
|
183
|
+
c.def_method("baz", "qux") do
|
|
184
|
+
<<-EOD
|
|
185
|
+
[1, 2, 3].each do |i|
|
|
186
|
+
p i
|
|
187
|
+
end
|
|
188
|
+
EOD
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
m = MethodDef.new("qux", "quxx", "quxxx") do
|
|
192
|
+
<<-EOD
|
|
193
|
+
p quxx + quxxx
|
|
194
|
+
EOD
|
|
195
|
+
end
|
|
196
|
+
m.comment = "hello world\n123"
|
|
197
|
+
c.add_method(m)
|
|
198
|
+
c.def_code <<-EOD
|
|
199
|
+
Foo.new
|
|
200
|
+
Bar.z
|
|
201
|
+
EOD
|
|
202
|
+
c.def_code <<-EOD
|
|
203
|
+
Foo.new
|
|
204
|
+
Bar.z
|
|
205
|
+
EOD
|
|
206
|
+
c.def_privatemethod("foo", "baz", "*arg", "&block")
|
|
207
|
+
|
|
208
|
+
puts c.dump
|
|
209
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# encoding: ASCII-8BIT
|
|
2
|
+
# XSD4R - Generating comment 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
|
+
|
|
12
|
+
|
|
13
|
+
module XSD
|
|
14
|
+
module CodeGen
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
module CommentDef
|
|
18
|
+
include GenSupport
|
|
19
|
+
|
|
20
|
+
attr_accessor :comment
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def dump_comment
|
|
25
|
+
if /\A#/ =~ @comment
|
|
26
|
+
format(@comment)
|
|
27
|
+
else
|
|
28
|
+
format(@comment).gsub(/^/, '# ')
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
# encoding: ASCII-8BIT
|
|
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
|