Class | XSD::CodeGen::ModuleDef |
In: |
lib/xsd/codegen/moduledef.rb
|
Parent: | Object |
# File lib/xsd/codegen/moduledef.rb, line 22 22: def initialize(name) 23: @name = name 24: @comment = nil 25: @const = [] 26: @code = [] 27: @requirepath = [] 28: @methoddef = [] 29: end
# File lib/xsd/codegen/moduledef.rb, line 60 60: def add_method(m, visibility = :public) 61: @methoddef << [visibility, m] 62: end
# File lib/xsd/codegen/moduledef.rb, line 35 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
# File lib/xsd/codegen/moduledef.rb, line 46 46: def def_method(name, *params) 47: add_method(MethodDef.new(name, *params) { yield if block_given? }, :public) 48: end
# File lib/xsd/codegen/moduledef.rb, line 56 56: def def_privatemethod(name, *params) 57: add_method(MethodDef.new(name, *params) { yield if block_given? }, :private) 58: end
# File lib/xsd/codegen/moduledef.rb, line 51 51: def def_protectedmethod(name, *params) 52: add_method(MethodDef.new(name, *params) { yield if block_given? }, 53: :protected) 54: end
# File lib/xsd/codegen/moduledef.rb, line 31 31: def def_require(path) 32: @requirepath << path 33: end
# File lib/xsd/codegen/moduledef.rb, line 64 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
# File lib/xsd/codegen/moduledef.rb, line 113 113: def dump_code 114: dump_static(@code.join("\n")) 115: end
# File lib/xsd/codegen/moduledef.rb, line 105 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
# File lib/xsd/codegen/moduledef.rb, line 121 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
# File lib/xsd/codegen/moduledef.rb, line 153 153: def dump_module_def 154: name = @name.to_s.split(/::/) 155: format("module #{name.last}") 156: end
# File lib/xsd/codegen/moduledef.rb, line 158 158: def dump_module_def_end 159: format("end") 160: end
# File lib/xsd/codegen/moduledef.rb, line 145 145: def dump_package_def(package) 146: format(package.collect { |ele| "module #{ele}" }.join("; ")) + "\n\n" 147: end
# File lib/xsd/codegen/moduledef.rb, line 149 149: def dump_package_def_end(package) 150: "\n\n" + format(package.collect { |ele| "end" }.join("; ")) 151: end
# File lib/xsd/codegen/moduledef.rb, line 97 97: def dump_requirepath 98: format( 99: @requirepath.collect { |path| 100: %Q(require '#{path}') 101: }.join("\n") 102: ) 103: end
# File lib/xsd/codegen/moduledef.rb, line 117 117: def dump_static(str) 118: format(str, 2) 119: end