vendor/soap4r/xsd/codegen/moduledef.rb in soybean-2.1.5 vs vendor/soap4r/xsd/codegen/moduledef.rb in soybean-2.2.0

- old
+ new

@@ -11,176 +11,181 @@ require 'xsd/codegen/methoddef' require 'xsd/codegen/commentdef' module XSD -module CodeGen + module CodeGen -class ModuleDef - include GenSupport - include CommentDef + class ModuleDef + include GenSupport + include CommentDef - attr_reader :name - attr_reader :innermodule + attr_reader :name + attr_reader :innermodule - def initialize(name) - @name = name - @comment = nil - @const = [] - @code = [] - @requirepath = [] - @methoddef = [] - @innermodule = [] - end + def initialize(name) + @name = name + @comment = nil + @const = [] + @code = [] + @requirepath = [] + @methoddef = [] + @innermodule = [] + end - def def_require(path) - @requirepath << path - end + def def_require(path) + @requirepath << path + end - def def_const(const, value) - unless safeconstname?(const) - raise ArgumentError.new("#{const} seems to be unsafe") - end - @const << [const, value] - end + def def_const(const, value) + unless safeconstname?(const) + raise ArgumentError.new("#{const} seems to be unsafe") + end + @const << [const, value] + end - def def_code(code) - @code << code - end + def def_code(code) + @code << code + end - def def_method(name, *params) - add_method(MethodDef.new(name, *params) { yield if block_given? }, :public) - end - alias def_publicmethod def_method + def def_method(name, *params) + add_method(MethodDef.new(name, *params) { yield if block_given? }, :public) + end - def def_protectedmethod(name, *params) - add_method(MethodDef.new(name, *params) { yield if block_given? }, - :protected) - end + alias def_publicmethod def_method - def def_privatemethod(name, *params) - add_method(MethodDef.new(name, *params) { yield if block_given? }, :private) - end + def def_protectedmethod(name, *params) + add_method(MethodDef.new(name, *params) { yield if block_given? }, + :protected) + end - def add_method(m, visibility = :public) - @methoddef << [visibility, m] - end + def def_privatemethod(name, *params) + add_method(MethodDef.new(name, *params) { yield if block_given? }, :private) + end - def dump - buf = "" - unless @requirepath.empty? - buf << dump_requirepath - end - buf << dump_emptyline unless buf.empty? - package = @name.split(/::/)[0..-2] - buf << dump_package_def(package) unless package.empty? - buf << dump_comment if @comment - buf << dump_module_def - spacer = false - unless @const.empty? - buf << dump_emptyline if spacer - spacer = true - buf << dump_const - end - unless @innermodule.empty? - buf << dump_emptyline # always add 1 empty line - spacer = true - buf << dump_innermodule - end - unless @code.empty? - buf << dump_emptyline if spacer - spacer = true - buf << dump_code - end - unless @methoddef.empty? - buf << dump_emptyline if spacer - spacer = true - buf << dump_methods - end - buf << dump_module_def_end - buf << dump_package_def_end(package) unless package.empty? - buf.gsub(/^\s+$/, '') - end + def add_method(m, visibility = :public) + @methoddef << [visibility, m] + end -private + def dump + buf = "" + unless @requirepath.empty? + buf << dump_requirepath + end + buf << dump_emptyline unless buf.empty? + package = @name.split(/::/)[0..-2] + buf << dump_package_def(package) unless package.empty? + buf << dump_comment if @comment + buf << dump_module_def + spacer = false + unless @const.empty? + buf << dump_emptyline if spacer + spacer = true + buf << dump_const + end + unless @innermodule.empty? + buf << dump_emptyline # always add 1 empty line + spacer = true + buf << dump_innermodule + end + unless @code.empty? + buf << dump_emptyline if spacer + spacer = true + buf << dump_code + end + unless @methoddef.empty? + buf << dump_emptyline if spacer + spacer = true + buf << dump_methods + end + buf << dump_module_def_end + buf << dump_package_def_end(package) unless package.empty? + buf.gsub(/^\s+$/, '') + end - def dump_requirepath - format( - @requirepath.collect { |path| - %Q(require '#{path}') - }.join("\n") - ) - end + private - def dump_const - dump_static( - @const.sort.collect { |var, value| - %Q(#{var} = #{dump_value(value)}) - }.join("\n") - ) - end + def dump_requirepath + format( + @requirepath.collect { |path| + %Q(require '#{path}') + }.join("\n") + ) + end - def dump_innermodule - dump_static( - @innermodule.collect { |moduledef| - moduledef.dump - }.join("\n") - ) - end + def dump_const + dump_static( + @const.sort.collect { |var, value| + %Q(#{var} = #{dump_value(value)}) + }.join("\n") + ) + end - def dump_code - dump_static(@code.join("\n")) - end + def dump_innermodule + dump_static( + @innermodule.collect { |moduledef| + moduledef.dump + }.join("\n") + ) + end - def dump_static(str) - format(str, 2) - end + def dump_code + dump_static(@code.join("\n")) + end - def dump_methods - methods = {} - @methoddef.each do |visibility, method| - (methods[visibility] ||= []) << method - end - str = "" - [:public, :protected, :private].each do |visibility| - if methods[visibility] - str << "\n" unless str.empty? - str << visibility.to_s << "\n\n" unless visibility == :public - str << methods[visibility].collect { |m| format(m.dump, 2) }.join("\n") + def dump_static(str) + format(str, 2) end - end - str - end - def dump_value(value) - if value.respond_to?(:to_src) - value.to_src - else - value - end - end + def dump_methods + methods = {} + @methoddef.each do |visibility, method| + (methods[visibility] ||= []) << method + end + str = "" + [:public, :protected, :private].each do |visibility| + if methods[visibility] + str << "\n" unless str.empty? + str << visibility.to_s << "\n\n" unless visibility == :public + str << methods[visibility].collect { |m| format(m.dump, 2) }.join("\n") + end + end + str + end - def dump_package_def(package) - format(package.collect { |ele| "module #{ele}" }.join("; ")) + "\n\n" - end + def dump_value(value) + if value.respond_to?(:to_src) + value.to_src + else + value + end + end - def dump_package_def_end(package) - "\n\n" + format(package.collect { |ele| "end" }.join("; ")) - end + def padding(package) + @padding ||= " " * package.size + end - def dump_module_def - name = @name.to_s.split(/::/) - format("module #{name.last}") - end + def dump_package_def(package) + format package.each_with_index.collect { |ele, i| (" " * i) + "module #{ele}" }.join("\n") + end - def dump_module_def_end - format("end") - end -end + def dump_package_def_end(package) + format package.each_with_index.collect { |_, i| (" " * i) + "end" }.reverse.join("\n") + end + def dump_module_def + name = @name.to_s.split(/::/) + format("module #{name.last}") + end -end + def dump_module_def_end + format("end") + end + end + + + end end if __FILE__ == $0 require 'xsd/codegen/moduledef'