Class: BiteScript::FileBuilder
- Inherits:
-
Object
- Object
- BiteScript::FileBuilder
show all
- Includes:
- QuickTypes, Util
- Defined in:
- lib/bitescript/builder.rb,
lib/bitescript/asm3/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
-
#to_widen(&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.
108
109
110
111
112
113
114
115
|
# File 'lib/bitescript/builder.rb', line 108
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.
104
105
106
|
# File 'lib/bitescript/builder.rb', line 104
def class_builders
@class_builders
end
|
#file_name ⇒ Object
Returns the value of attribute file_name.
103
104
105
|
# File 'lib/bitescript/builder.rb', line 103
def file_name
@file_name
end
|
#imports ⇒ Object
Returns the value of attribute imports.
105
106
107
|
# File 'lib/bitescript/builder.rb', line 105
def imports
@imports
end
|
#package(*names) ⇒ Object
Returns the value of attribute package.
106
107
108
|
# File 'lib/bitescript/builder.rb', line 106
def package
@package
end
|
Class Method Details
.build(filename, &block) ⇒ Object
124
125
126
127
128
129
130
|
# File 'lib/bitescript/builder.rb', line 124
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
171
172
173
|
# File 'lib/bitescript/builder.rb', line 171
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
# File 'lib/bitescript/builder.rb', line 132
def define_class(class_name, opts, &block)
pkg = opts[:package] || @package.dup || []
opts[:widen] ||= @widen_proc
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
175
176
177
178
179
180
181
|
# File 'lib/bitescript/builder.rb', line 175
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
117
118
119
120
121
122
|
# File 'lib/bitescript/builder.rb', line 117
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
183
184
185
|
# File 'lib/bitescript/builder.rb', line 183
def line(line)
end
|
#method? ⇒ Boolean
210
211
212
|
# File 'lib/bitescript/builder.rb', line 210
def method?
false
end
|
#private_class(class_name, superclass = java.lang.Object, *interfaces, &block) ⇒ Object
167
168
169
|
# File 'lib/bitescript/builder.rb', line 167
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
163
164
165
|
# File 'lib/bitescript/builder.rb', line 163
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
155
156
157
|
# File 'lib/bitescript/builder.rb', line 155
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
159
160
161
|
# File 'lib/bitescript/builder.rb', line 159
def public_interface(class_name, *interfaces, &block)
define_class(class_name, :visibility => :public, :interface => true, :interfaces => interfaces, &block)
end
|
#to_widen(&block) ⇒ Object
151
152
153
|
# File 'lib/bitescript/builder.rb', line 151
def to_widen(&block)
@widen_proc = block
end
|
#unpack_packages(*names) ⇒ Object
200
201
202
203
204
205
206
207
208
|
# File 'lib/bitescript/builder.rb', line 200
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
|