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.
100
101
102
103
104
105
106
107
|
# File 'lib/bitescript/builder.rb', line 100
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.
96
97
98
|
# File 'lib/bitescript/builder.rb', line 96
def class_builders
@class_builders
end
|
#file_name ⇒ Object
Returns the value of attribute file_name.
95
96
97
|
# File 'lib/bitescript/builder.rb', line 95
def file_name
@file_name
end
|
#imports ⇒ Object
Returns the value of attribute imports.
97
98
99
|
# File 'lib/bitescript/builder.rb', line 97
def imports
@imports
end
|
#package(*names) ⇒ Object
Returns the value of attribute package.
98
99
100
|
# File 'lib/bitescript/builder.rb', line 98
def package
@package
end
|
Class Method Details
.build(filename, &block) ⇒ Object
116
117
118
119
120
121
122
|
# File 'lib/bitescript/builder.rb', line 116
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
158
159
160
|
# File 'lib/bitescript/builder.rb', line 158
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
# File 'lib/bitescript/builder.rb', line 124
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
162
163
164
165
166
167
168
|
# File 'lib/bitescript/builder.rb', line 162
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
109
110
111
112
113
114
|
# File 'lib/bitescript/builder.rb', line 109
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
170
171
172
|
# File 'lib/bitescript/builder.rb', line 170
def line(line)
end
|
#method? ⇒ Boolean
197
198
199
|
# File 'lib/bitescript/builder.rb', line 197
def method?
false
end
|
#private_class(class_name, superclass = java.lang.Object, *interfaces, &block) ⇒ Object
154
155
156
|
# File 'lib/bitescript/builder.rb', line 154
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
150
151
152
|
# File 'lib/bitescript/builder.rb', line 150
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
142
143
144
|
# File 'lib/bitescript/builder.rb', line 142
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
146
147
148
|
# File 'lib/bitescript/builder.rb', line 146
def public_interface(class_name, *interfaces, &block)
define_class(class_name, :visibility => :public, :interface => true, :interfaces => interfaces, &block)
end
|
#unpack_packages(*names) ⇒ Object
187
188
189
190
191
192
193
194
195
|
# File 'lib/bitescript/builder.rb', line 187
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
|