Class: XSD::CodeGen::ModuleDef

Inherits:
Object
  • Object
show all
Includes:
CommentDef, GenSupport
Defined in:
lib/xsd/codegen/moduledef.rb

Direct Known Subclasses

ClassDef

Instance Attribute Summary collapse

Attributes included from CommentDef

#comment

Instance Method Summary collapse

Methods included from GenSupport

capitalize, constant?, #format, keyword?, safeconstname, safeconstname?, safemethodname, safemethodname?, safevarname, safevarname?, uncapitalize

Constructor Details

#initialize(name) ⇒ ModuleDef

Returns a new instance of ModuleDef.



25
26
27
28
29
30
31
32
33
# File 'lib/xsd/codegen/moduledef.rb', line 25

def initialize(name)
  @name = name
  @comment = nil
  @const = []
  @code = []
  @requirepath = []
  @methoddef = []
  @innermodule = []
end

Instance Attribute Details

#innermoduleObject (readonly)

Returns the value of attribute innermodule.



23
24
25
# File 'lib/xsd/codegen/moduledef.rb', line 23

def innermodule
  @innermodule
end

#nameObject (readonly)

Returns the value of attribute name.



22
23
24
# File 'lib/xsd/codegen/moduledef.rb', line 22

def name
  @name
end

Instance Method Details

#add_method(m, visibility = :public) ⇒ Object



64
65
66
# File 'lib/xsd/codegen/moduledef.rb', line 64

def add_method(m, visibility = :public)
  @methoddef << [visibility, m]
end

#def_code(code) ⇒ Object



46
47
48
# File 'lib/xsd/codegen/moduledef.rb', line 46

def def_code(code)
  @code << code
end

#def_const(const, value) ⇒ Object



39
40
41
42
43
44
# File 'lib/xsd/codegen/moduledef.rb', line 39

def def_const(const, value)
  unless safeconstname?(const)
    raise ArgumentError.new("#{const} seems to be unsafe")
  end
  @const << [const, value]
end

#def_method(name, *params) ⇒ Object Also known as: def_publicmethod



50
51
52
# File 'lib/xsd/codegen/moduledef.rb', line 50

def def_method(name, *params)
  add_method(MethodDef.new(name, *params) { yield if block_given? }, :public)
end

#def_privatemethod(name, *params) ⇒ Object



60
61
62
# File 'lib/xsd/codegen/moduledef.rb', line 60

def def_privatemethod(name, *params)
  add_method(MethodDef.new(name, *params) { yield if block_given? }, :private)
end

#def_protectedmethod(name, *params) ⇒ Object



55
56
57
58
# File 'lib/xsd/codegen/moduledef.rb', line 55

def def_protectedmethod(name, *params)
  add_method(MethodDef.new(name, *params) { yield if block_given? },
    :protected)
end

#def_require(path) ⇒ Object



35
36
37
# File 'lib/xsd/codegen/moduledef.rb', line 35

def def_require(path)
  @requirepath << path
end

#dumpObject



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/xsd/codegen/moduledef.rb', line 68

def dump
  buf = ""
  unless @requirepath.empty?
    buf << dump_requirepath 
  end
  buf << dump_emptyline unless buf.empty?
  package = @name.split(/::/)[0..-2]
  buf << dump_package_def(package) unless package.empty?
  buf << dump_comment if @comment
  buf << dump_module_def
  spacer = false
  unless @const.empty?
    buf << dump_emptyline if spacer
    spacer = true
    buf << dump_const
  end
  unless @innermodule.empty?
    buf << dump_emptyline # always add 1 empty line
    spacer = true
    buf << dump_innermodule
  end
  unless @code.empty?
    buf << dump_emptyline if spacer
    spacer = true
    buf << dump_code
  end
  unless @methoddef.empty?
    buf << dump_emptyline if spacer
    spacer = true
    buf << dump_methods
  end
  buf << dump_module_def_end
  buf << dump_package_def_end(package) unless package.empty?
  buf.gsub(/^\s+$/, '')
end