Class: BiteScript::FileBuilder
- Inherits:
-
Object
- Object
- BiteScript::FileBuilder
show all
- Includes:
- QuickTypes, Util
- Defined in:
- lib/bitescript/builder.rb
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
-
#default_class(class_name, superclass = java.lang.Object, *interfaces, &block) ⇒ Object
-
#define_class(class_name, opts, &block) ⇒ Object
-
#generate ⇒ Object
-
#init_imports ⇒ Object
-
#initialize(file_name) ⇒ FileBuilder
constructor
A new instance of FileBuilder.
-
#line(line) ⇒ Object
-
#method? ⇒ Boolean
-
#private_class(class_name, superclass = java.lang.Object, *interfaces, &block) ⇒ Object
-
#protected_class(class_name, superclass = java.lang.Object, *interfaces, &block) ⇒ Object
-
#public_class(class_name, superclass = java.lang.Object, *interfaces, &block) ⇒ Object
-
#public_interface(class_name, *interfaces, &block) ⇒ Object
-
#unpack_packages(*names) ⇒ Object
Methods included from QuickTypes
#boolean, #byte, #char, #double, #float, #int, #long, #null, #object, #short, #string, #void
Methods included from Util
#type_from_dotted
Constructor Details
#initialize(file_name) ⇒ FileBuilder
Returns a new instance of FileBuilder.
94
95
96
97
98
99
100
101
|
# File 'lib/bitescript/builder.rb', line 94
def initialize(file_name)
@file_name = file_name
@class_builders = {}
@imports = {}
@package = []
init_imports
end
|
Instance Attribute Details
#class_builders ⇒ Object
Returns the value of attribute class_builders.
90
91
92
|
# File 'lib/bitescript/builder.rb', line 90
def class_builders
@class_builders
end
|
#file_name ⇒ Object
Returns the value of attribute file_name.
89
90
91
|
# File 'lib/bitescript/builder.rb', line 89
def file_name
@file_name
end
|
#imports ⇒ Object
Returns the value of attribute imports.
91
92
93
|
# File 'lib/bitescript/builder.rb', line 91
def imports
@imports
end
|
#package(*names) ⇒ Object
Returns the value of attribute package.
92
93
94
|
# File 'lib/bitescript/builder.rb', line 92
def package
@package
end
|
Class Method Details
.build(filename, &block) ⇒ Object
110
111
112
113
114
115
116
|
# File 'lib/bitescript/builder.rb', line 110
def self.build(filename, &block)
fb = new(filename)
if block_given?
fb.instance_eval(&block)
end
fb
end
|
Instance Method Details
#default_class(class_name, superclass = java.lang.Object, *interfaces, &block) ⇒ Object
152
153
154
|
# File 'lib/bitescript/builder.rb', line 152
def default_class(class_name, superclass = java.lang.Object, *interfaces, &block)
define_class(class_name, :visibility => :default, :superclass => superclass, :interfaces => interfaces, &block)
end
|
#define_class(class_name, opts, &block) ⇒ Object
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
# File 'lib/bitescript/builder.rb', line 118
def define_class(class_name, opts, &block)
pkg = opts[:package] || @package.dup || []
class_name = pkg.empty? ? class_name : "#{pkg.join('/')}/#{class_name}"
class_builder = ClassBuilder.new(self, class_name, @file_name, opts)
@class_builders[class_name] ||= class_builder
if block_given?
if block.arity == 1
block.call(class_builder)
else
class_builder.instance_eval(&block)
end
else
return class_builder
end
end
|
#generate ⇒ Object
156
157
158
159
160
161
162
|
# File 'lib/bitescript/builder.rb', line 156
def generate
@class_builders.each do |class_name, class_builder|
class_file = "#{class_name.gsub('.', '/')}.class"
yield class_file, class_builder
end
end
|
#init_imports ⇒ Object
103
104
105
106
107
108
|
# File 'lib/bitescript/builder.rb', line 103
def init_imports
@imports[:int.to_s] = Java::int.java_class
@imports[:string.to_s] = Java::java.lang.String.java_class
@imports[:object.to_s] = Java::java.lang.Object.java_class
end
|
#line(line) ⇒ Object
164
165
166
|
# File 'lib/bitescript/builder.rb', line 164
def line(line)
end
|
#method? ⇒ Boolean
191
192
193
|
# File 'lib/bitescript/builder.rb', line 191
def method?
false
end
|
#private_class(class_name, superclass = java.lang.Object, *interfaces, &block) ⇒ Object
148
149
150
|
# File 'lib/bitescript/builder.rb', line 148
def private_class(class_name, superclass = java.lang.Object, *interfaces, &block)
define_class(class_name, :visibility => :private, :superclass => superclass, :interfaces => interfaces, &block)
end
|
#protected_class(class_name, superclass = java.lang.Object, *interfaces, &block) ⇒ Object
144
145
146
|
# File 'lib/bitescript/builder.rb', line 144
def protected_class(class_name, superclass = java.lang.Object, *interfaces, &block)
define_class(class_name, :visibility => :protected, :superclass => superclass, :interfaces => interfaces, &block)
end
|
#public_class(class_name, superclass = java.lang.Object, *interfaces, &block) ⇒ Object
136
137
138
|
# File 'lib/bitescript/builder.rb', line 136
def public_class(class_name, superclass = java.lang.Object, *interfaces, &block)
define_class(class_name, :visibility => :public, :superclass => superclass, :interfaces => interfaces, &block)
end
|
#public_interface(class_name, *interfaces, &block) ⇒ Object
140
141
142
|
# File 'lib/bitescript/builder.rb', line 140
def public_interface(class_name, *interfaces, &block)
define_class(class_name, :visibility => :public, :interface => true, :interfaces => interfaces, &block)
end
|
#unpack_packages(*names) ⇒ Object
181
182
183
184
185
186
187
188
189
|
# File 'lib/bitescript/builder.rb', line 181
def unpack_packages(*names)
package = []
names.each do |name_maybe_dotted|
name_maybe_dotted.split(/\./).each do |name|
package.push name
end
end
package
end
|