Class XSD::CodeGen::ModuleDef
In: lib/xsd/codegen/moduledef.rb
Parent: Object

Methods

Included Modules

GenSupport CommentDef

Public Class methods

[Source]

    # 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

Public Instance methods

[Source]

    # File lib/xsd/codegen/moduledef.rb, line 60
60:   def add_method(m, visibility = :public)
61:     @methoddef << [visibility, m]
62:   end

[Source]

    # File lib/xsd/codegen/moduledef.rb, line 42
42:   def def_code(code)
43:     @code << code
44:   end

[Source]

    # 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

[Source]

    # 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

[Source]

    # 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

[Source]

    # 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
def_publicmethod(name, *params)

Alias for def_method

[Source]

    # File lib/xsd/codegen/moduledef.rb, line 31
31:   def def_require(path)
32:     @requirepath << path
33:   end

[Source]

    # 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

Private Instance methods

[Source]

     # File lib/xsd/codegen/moduledef.rb, line 113
113:   def dump_code
114:     dump_static(@code.join("\n"))
115:   end

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # File lib/xsd/codegen/moduledef.rb, line 158
158:   def dump_module_def_end
159:     format("end")
160:   end

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

     # File lib/xsd/codegen/moduledef.rb, line 117
117:   def dump_static(str)
118:     format(str, 2)
119:   end

[Source]

     # File lib/xsd/codegen/moduledef.rb, line 137
137:   def dump_value(value)
138:     if value.respond_to?(:to_src)
139:       value.to_src
140:     else
141:       value
142:     end
143:   end

[Validate]