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 25
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 64
def add_method(m, visibility = :public)
  @methoddef << [visibility, m]
end
def_code(code) click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 46
def def_code(code)
  @code << code
end
def_const(const, value) click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 39
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 50
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 60
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 55
def def_protectedmethod(name, *params)
  add_method(MethodDef.new(name, *params) { yield if block_given? },
    :protected)
end
def_publicmethod(name, *params)
Alias for: def_method
def_require(path) click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 35
def def_require(path)
  @requirepath << path
end
dump() click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 68
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 130
def dump_code
  dump_static(@code.join("\n"))
end
dump_const() click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 114
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 122
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 138
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 170
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 175
def dump_module_def_end
  format("end")
end
dump_package_def(package) click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 162
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 166
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 106
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 134
def dump_static(str)
  format(str, 2)
end
dump_value(value) click to toggle source
# File lib/xsd/codegen/moduledef.rb, line 154
def dump_value(value)
  if value.respond_to?(:to_src)
    value.to_src
  else
    value
  end
end