Class XSD::CodeGen::ClassDef
In: lib/xsd/codegen/classdef.rb
Parent: ModuleDef

Methods

Included Modules

GenSupport

Public Class methods

[Source]

    # File lib/xsd/codegen/classdef.rb, line 21
21:   def initialize(name, baseclass = nil)
22:     super(name)
23:     @baseclass = baseclass
24:     @classvar = []
25:     @attrdef = []
26:   end

Public Instance methods

[Source]

    # File lib/xsd/codegen/classdef.rb, line 36
36:   def def_attr(attrname, writable = true, varname = nil)
37:     unless safevarname?(varname || attrname)
38:       raise ArgumentError.new("#{varname || attrname} seems to be unsafe")
39:     end
40:     @attrdef << [attrname, writable, varname]
41:   end

[Source]

    # File lib/xsd/codegen/classdef.rb, line 28
28:   def def_classvar(var, value)
29:     var = var.sub(/\A@@/, "")
30:     unless safevarname?(var)
31:       raise ArgumentError.new("#{var} seems to be unsafe")
32:     end
33:     @classvar << [var, value]
34:   end

[Source]

    # File lib/xsd/codegen/classdef.rb, line 43
43:   def dump
44:     buf = ""
45:     unless @requirepath.empty?
46:       buf << dump_requirepath 
47:     end
48:     buf << dump_emptyline unless buf.empty?
49:     package = @name.split(/::/)[0..-2]
50:     buf << dump_package_def(package) unless package.empty?
51:     buf << dump_comment if @comment
52:     buf << dump_class_def
53:     spacer = false
54:     unless @classvar.empty?
55:       spacer = true
56:       buf << dump_classvar
57:     end
58:     unless @const.empty?
59:       buf << dump_emptyline if spacer
60:       spacer = true
61:       buf << dump_const
62:     end
63:     unless @code.empty?
64:       buf << dump_emptyline if spacer
65:       spacer = true
66:       buf << dump_code
67:     end
68:     unless @attrdef.empty?
69:       buf << dump_emptyline if spacer
70:       spacer = true
71:       buf << dump_attributes
72:     end
73:     unless @methoddef.empty?
74:       buf << dump_emptyline if spacer
75:       spacer = true
76:       buf << dump_methods
77:     end
78:     buf << dump_class_def_end
79:     buf << dump_package_def_end(package) unless package.empty?
80:     buf.gsub(/^\s+$/, '')
81:   end

Private Instance methods

[Source]

     # File lib/xsd/codegen/classdef.rb, line 124
124:   def dump_accessor(attrname, writable)
125:     if writable
126:       "attr_accessor :#{attrname}"
127:     else
128:       "attr_reader :#{attrname}"
129:     end
130:   end

[Source]

     # File lib/xsd/codegen/classdef.rb, line 132
132:   def dump_attribute(attrname, writable, varname)
133:     str = nil
134:     mr = MethodDef.new(attrname)
135:     mr.definition = "@#{varname}"
136:     str = mr.dump
137:     if writable
138:       mw = MethodDef.new(attrname + "=", 'value')
139:       mw.definition = "@#{varname} = value"
140:       str << "\n" + mw.dump
141:     end
142:     str
143:   end

[Source]

     # File lib/xsd/codegen/classdef.rb, line 106
106:   def dump_attributes
107:     str = ""
108:     @attrdef.each do |attrname, writable, varname|
109:       varname ||= attrname
110:       if attrname == varname
111:         str << format(dump_accessor(attrname, writable), 2)
112:       end
113:     end
114:     @attrdef.each do |attrname, writable, varname|
115:       varname ||= attrname
116:       if attrname != varname
117:         str << "\n" unless str.empty?
118:         str << format(dump_attribute(attrname, writable, varname), 2)
119:       end
120:     end
121:     str
122:   end

[Source]

    # File lib/xsd/codegen/classdef.rb, line 85
85:   def dump_class_def
86:     name = @name.to_s.split(/::/)
87:     if @baseclass
88:       format("class #{name.last} < #{@baseclass}")
89:     else
90:       format("class #{name.last}")
91:     end
92:   end

[Source]

    # File lib/xsd/codegen/classdef.rb, line 94
94:   def dump_class_def_end
95:     str = format("end")
96:   end

[Source]

     # File lib/xsd/codegen/classdef.rb, line 98
 98:   def dump_classvar
 99:     dump_static(
100:       @classvar.collect { |var, value|
101:         %Q(@@#{var.sub(/^@@/, "")} = #{dump_value(value)})
102:       }.join("\n")
103:     )
104:   end

[Validate]