Parent

Included Modules

Files

Class Index [+]

Quicksearch

XSD::CodeGen::ModuleDef

Attributes

name[R]
innermodule[R]

Public Class Methods

new(name) click to toggle source
    # File lib/xsd/codegen/moduledef.rb, line 25
25:   def initialize(name)
26:     @name = name
27:     @comment = nil
28:     @const = []
29:     @code = []
30:     @requirepath = []
31:     @methoddef = []
32:     @innermodule = []
33:   end

Public Instance Methods

add_method(m, visibility = :public) click to toggle source
    # File lib/xsd/codegen/moduledef.rb, line 64
64:   def add_method(m, visibility = :public)
65:     @methoddef << [visibility, m]
66:   end
def_code(code) click to toggle source
    # File lib/xsd/codegen/moduledef.rb, line 46
46:   def def_code(code)
47:     @code << code
48:   end
def_const(const, value) click to toggle source
    # File lib/xsd/codegen/moduledef.rb, line 39
39:   def def_const(const, value)
40:     unless safeconstname?(const)
41:       raise ArgumentError.new("#{const} seems to be unsafe")
42:     end
43:     @const << [const, value]
44:   end
def_method(name, *params) click to toggle source
    # File lib/xsd/codegen/moduledef.rb, line 50
50:   def def_method(name, *params)
51:     add_method(MethodDef.new(name, *params) { yield if block_given? }, :public)
52:   end
Also aliased as: def_publicmethod
def_privatemethod(name, *params) click to toggle source
    # File lib/xsd/codegen/moduledef.rb, line 60
60:   def def_privatemethod(name, *params)
61:     add_method(MethodDef.new(name, *params) { yield if block_given? }, :private)
62:   end
def_protectedmethod(name, *params) click to toggle source
    # File lib/xsd/codegen/moduledef.rb, line 55
55:   def def_protectedmethod(name, *params)
56:     add_method(MethodDef.new(name, *params) { yield if block_given? },
57:       :protected)
58:   end
def_publicmethod(name, *params) click to toggle source
Alias for: def_method
def_require(path) click to toggle source
    # File lib/xsd/codegen/moduledef.rb, line 35
35:   def def_require(path)
36:     @requirepath << path
37:   end
dump() click to toggle source
     # File lib/xsd/codegen/moduledef.rb, line 68
 68:   def dump
 69:     buf = ""
 70:     unless @requirepath.empty?
 71:       buf << dump_requirepath 
 72:     end
 73:     buf << dump_emptyline unless buf.empty?
 74:     package = @name.split(/::/)[0..2]
 75:     buf << dump_package_def(package) unless package.empty?
 76:     buf << dump_comment if @comment
 77:     buf << dump_module_def
 78:     spacer = false
 79:     unless @const.empty?
 80:       buf << dump_emptyline if spacer
 81:       spacer = true
 82:       buf << dump_const
 83:     end
 84:     unless @innermodule.empty?
 85:       buf << dump_emptyline # always add 1 empty line
 86:       spacer = true
 87:       buf << dump_innermodule
 88:     end
 89:     unless @code.empty?
 90:       buf << dump_emptyline if spacer
 91:       spacer = true
 92:       buf << dump_code
 93:     end
 94:     unless @methoddef.empty?
 95:       buf << dump_emptyline if spacer
 96:       spacer = true
 97:       buf << dump_methods
 98:     end
 99:     buf << dump_module_def_end
100:     buf << dump_package_def_end(package) unless package.empty?
101:     buf.gsub(/^\s+$/, '')
102:   end

Private Instance Methods

dump_code() click to toggle source
     # File lib/xsd/codegen/moduledef.rb, line 130
130:   def dump_code
131:     dump_static(@code.join("\n"))
132:   end
dump_const() click to toggle source
     # File lib/xsd/codegen/moduledef.rb, line 114
114:   def dump_const
115:     dump_static(
116:       @const.sort.collect { |var, value|
117:         %(#{var} = #{dump_value(value)})
118:       }.join("\n")
119:     )
120:   end
dump_innermodule() click to toggle source
     # File lib/xsd/codegen/moduledef.rb, line 122
122:   def dump_innermodule
123:     dump_static(
124:       @innermodule.collect { |moduledef|
125:         moduledef.dump
126:       }.join("\n")
127:     )
128:   end
dump_methods() click to toggle source
     # File lib/xsd/codegen/moduledef.rb, line 138
138:   def dump_methods
139:     methods = {}
140:     @methoddef.each do |visibility, method|
141:       (methods[visibility] ||= []) << method
142:     end
143:     str = ""
144:     [:public, :protected, :private].each do |visibility|
145:       if methods[visibility]
146:         str << "\n" unless str.empty?
147:         str << visibility.to_s << "\n\n" unless visibility == :public
148:         str << methods[visibility].collect { |m| format(m.dump, 2) }.join("\n")
149:       end
150:     end
151:     str
152:   end
dump_module_def() click to toggle source
     # File lib/xsd/codegen/moduledef.rb, line 170
170:   def dump_module_def
171:     name = @name.to_s.split(/::/)
172:     format("module #{name.last}")
173:   end
dump_module_def_end() click to toggle source
     # File lib/xsd/codegen/moduledef.rb, line 175
175:   def dump_module_def_end
176:     format("end")
177:   end
dump_package_def(package) click to toggle source
     # File lib/xsd/codegen/moduledef.rb, line 162
162:   def dump_package_def(package)
163:     format(package.collect { |ele| "module #{ele}" }.join("; ")) + "\n\n"
164:   end
dump_package_def_end(package) click to toggle source
     # File lib/xsd/codegen/moduledef.rb, line 166
166:   def dump_package_def_end(package)
167:     "\n\n" + format(package.collect { |ele| "end" }.join("; "))
168:   end
dump_requirepath() click to toggle source
     # File lib/xsd/codegen/moduledef.rb, line 106
106:   def dump_requirepath
107:     format(
108:       @requirepath.collect { |path|
109:         %(require '#{path}')
110:       }.join("\n")
111:     )
112:   end
dump_static(str) click to toggle source
     # File lib/xsd/codegen/moduledef.rb, line 134
134:   def dump_static(str)
135:     format(str, 2)
136:   end
dump_value(value) click to toggle source
     # File lib/xsd/codegen/moduledef.rb, line 154
154:   def dump_value(value)
155:     if value.respond_to?(:to_src)
156:       value.to_src
157:     else
158:       value
159:     end
160:   end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.