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

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.


22
23
24
25
26
27
28
29
# File 'lib/xsd/codegen/moduledef.rb', line 22

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

Instance Method Details

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


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

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

#def_code(code) ⇒ Object


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

def def_code(code)
  @code << code
end

#def_const(const, value) ⇒ Object


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

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


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

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

#def_privatemethod(name, *params) ⇒ Object


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

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

#def_protectedmethod(name, *params) ⇒ Object


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

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

#def_require(path) ⇒ Object


31
32
33
# File 'lib/xsd/codegen/moduledef.rb', line 31

def def_require(path)
  @requirepath << path
end

#dumpObject


64
65
66
67
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
# File 'lib/xsd/codegen/moduledef.rb', line 64

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 @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