Class: Mirah::JavaSource::Builder
- Inherits:
-
Object
- Object
- Mirah::JavaSource::Builder
- Defined in:
- lib/mirah/jvm/source_generator/builder.rb
Instance Attribute Summary collapse
-
#classes ⇒ Object
Returns the value of attribute classes.
-
#compiler ⇒ Object
Returns the value of attribute compiler.
-
#filename ⇒ Object
Returns the value of attribute filename.
-
#package ⇒ Object
Returns the value of attribute package.
Instance Method Summary collapse
- #define_class(name, opts = {}) ⇒ Object
- #generate ⇒ Object
-
#initialize(filename, compiler) ⇒ Builder
constructor
A new instance of Builder.
- #public_interface(name, *interfaces) ⇒ Object
Constructor Details
#initialize(filename, compiler) ⇒ Builder
Returns a new instance of Builder.
33 34 35 36 37 |
# File 'lib/mirah/jvm/source_generator/builder.rb', line 33 def initialize(filename, compiler) @filename = filename @classes = {} @compiler = compiler end |
Instance Attribute Details
#classes ⇒ Object
Returns the value of attribute classes.
31 32 33 |
# File 'lib/mirah/jvm/source_generator/builder.rb', line 31 def classes @classes end |
#compiler ⇒ Object
Returns the value of attribute compiler.
31 32 33 |
# File 'lib/mirah/jvm/source_generator/builder.rb', line 31 def compiler @compiler end |
#filename ⇒ Object
Returns the value of attribute filename.
31 32 33 |
# File 'lib/mirah/jvm/source_generator/builder.rb', line 31 def filename @filename end |
#package ⇒ Object
Returns the value of attribute package.
31 32 33 |
# File 'lib/mirah/jvm/source_generator/builder.rb', line 31 def package @package end |
Instance Method Details
#define_class(name, opts = {}) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/mirah/jvm/source_generator/builder.rb', line 39 def define_class(name, opts={}) superclass = opts[:superclass] interfaces = opts[:interfaces] abstract = opts[:abstract] cls = ClassBuilder.new(self, name, superclass, interfaces, abstract) container = self if name.include? ?$ path = name.split '$' name = path.pop path.each do |piece| container = container.classes[piece] end end container.classes[name] = cls end |
#generate ⇒ Object
61 62 63 64 65 |
# File 'lib/mirah/jvm/source_generator/builder.rb', line 61 def generate @classes.values.each do |cls| yield cls.filename, cls end end |
#public_interface(name, *interfaces) ⇒ Object
55 56 57 58 59 |
# File 'lib/mirah/jvm/source_generator/builder.rb', line 55 def public_interface(name, *interfaces) cls = InterfaceBuilder.new(self, name, interfaces) @classes[name] = cls cls end |