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.
103
104
105
106
107
108
109
110
|
# File 'lib/bitescript/builder.rb', line 103
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.
99
100
101
|
# File 'lib/bitescript/builder.rb', line 99
def class_builders
@class_builders
end
|
#file_name ⇒ Object
Returns the value of attribute file_name.
98
99
100
|
# File 'lib/bitescript/builder.rb', line 98
def file_name
@file_name
end
|
#imports ⇒ Object
Returns the value of attribute imports.
100
101
102
|
# File 'lib/bitescript/builder.rb', line 100
def imports
@imports
end
|
#package(*names) ⇒ Object
Returns the value of attribute package.
101
102
103
|
# File 'lib/bitescript/builder.rb', line 101
def package
@package
end
|
Class Method Details
.build(filename, &block) ⇒ Object
119
120
121
122
123
124
125
|
# File 'lib/bitescript/builder.rb', line 119
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
166
167
168
|
# File 'lib/bitescript/builder.rb', line 166
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
# File 'lib/bitescript/builder.rb', line 127
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
170
171
172
173
174
175
176
|
# File 'lib/bitescript/builder.rb', line 170
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
112
113
114
115
116
117
|
# File 'lib/bitescript/builder.rb', line 112
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
178
179
180
|
# File 'lib/bitescript/builder.rb', line 178
def line(line)
end
|
#method? ⇒ Boolean
205
206
207
|
# File 'lib/bitescript/builder.rb', line 205
def method?
false
end
|
#private_class(class_name, superclass = java.lang.Object, *interfaces, &block) ⇒ Object
162
163
164
|
# File 'lib/bitescript/builder.rb', line 162
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
158
159
160
|
# File 'lib/bitescript/builder.rb', line 158
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
150
151
152
|
# File 'lib/bitescript/builder.rb', line 150
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
154
155
156
|
# File 'lib/bitescript/builder.rb', line 154
def public_interface(class_name, *interfaces, &block)
define_class(class_name, :visibility => :public, :interface => true, :interfaces => interfaces, &block)
end
|
#to_widen(&block) ⇒ Object
146
147
148
|
# File 'lib/bitescript/builder.rb', line 146
def to_widen(&block)
@widen_proc = block
end
|
#unpack_packages(*names) ⇒ Object
195
196
197
198
199
200
201
202
203
|
# File 'lib/bitescript/builder.rb', line 195
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
|