class XSD::CodeGen::ModuleDef
Attributes
innermodule[R]
name[R]
Public Class Methods
new(name)
click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 26 def initialize(name) @name = name @comment = nil @const = [] @code = [] @requirepath = [] @methoddef = [] @innermodule = [] end
Public Instance Methods
add_method(m, visibility = :public)
click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 65 def add_method(m, visibility = :public) @methoddef << [visibility, m] end
def_code(code)
click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 47 def def_code(code) @code << code end
def_const(const, value)
click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 40 def def_const(const, value) unless safeconstname?(const) raise ArgumentError.new("#{const} seems to be unsafe") end @const << [const, value] end
def_method(name, *params) { || ... }
click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 51 def def_method(name, *params) add_method(MethodDef.new(name, *params) { yield if block_given? }, :public) end
Also aliased as: def_publicmethod
def_privatemethod(name, *params) { || ... }
click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 61 def def_privatemethod(name, *params) add_method(MethodDef.new(name, *params) { yield if block_given? }, :private) end
def_protectedmethod(name, *params) { || ... }
click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 56 def def_protectedmethod(name, *params) add_method(MethodDef.new(name, *params) { yield if block_given? }, :protected) end
def_require(path)
click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 36 def def_require(path) @requirepath << path end
dump()
click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 69 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
Private Instance Methods
dump_code()
click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 131 def dump_code dump_static(@code.join("\n")) end
dump_const()
click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 115 def dump_const dump_static( @const.sort.collect { |var, value| %Q(#{var} = #{dump_value(value)}) }.join("\n") ) end
dump_innermodule()
click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 123 def dump_innermodule dump_static( @innermodule.collect { |moduledef| moduledef.dump }.join("\n") ) end
dump_methods()
click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 139 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
dump_module_def()
click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 171 def dump_module_def name = @name.to_s.split(/::/) format("module #{name.last}") end
dump_module_def_end()
click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 176 def dump_module_def_end format("end") end
dump_package_def(package)
click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 163 def dump_package_def(package) format(package.collect { |ele| "module #{ele}" }.join("; ")) + "\n\n" end
dump_package_def_end(package)
click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 167 def dump_package_def_end(package) "\n\n" + format(package.collect { |ele| "end" }.join("; ")) end
dump_requirepath()
click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 107 def dump_requirepath format( @requirepath.collect { |path| %Q(require '#{path}') }.join("\n") ) end
dump_static(str)
click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 135 def dump_static(str) format(str, 2) end
dump_value(value)
click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 155 def dump_value(value) if value.respond_to?(:to_src) value.to_src else value end end