Class | XSD::CodeGen::ClassDef |
In: |
lib/xsd/codegen/classdef.rb
|
Parent: | ModuleDef |
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# File lib/xsd/codegen/classdef.rb, line 94 94: def dump_class_def_end 95: str = format("end") 96: end