Class: RgGen::OutputBase::Component
- Inherits:
-
Base::Component
- Object
- Base::Component
- RgGen::OutputBase::Component
- Includes:
- Base::HierarchicalAccessors
- Defined in:
- lib/rggen/output_base/component.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#configuration ⇒ Object
readonly
Returns the value of attribute configuration.
-
#output_directory ⇒ Object
writeonly
Sets the attribute output_directory.
Attributes inherited from Base::Component
#children, #items, #level, #parent
Instance Method Summary collapse
- #add_item(item) ⇒ Object
- #build ⇒ Object
- #generate_code(kind, mode, buffer = nil) ⇒ Object
-
#initialize(parent, configuration, register_map) ⇒ Component
constructor
A new instance of Component.
- #write_file(root_directory) ⇒ Object
Methods inherited from Base::Component
Methods included from SingleForwardable
#def_object_delegator, #def_object_delegators
Constructor Details
#initialize(parent, configuration, register_map) ⇒ Component
Returns a new instance of Component.
6 7 8 9 10 11 12 13 |
# File 'lib/rggen/output_base/component.rb', line 6 def initialize(parent, configuration, register_map) super(parent) define_hierarchical_accessors @configuration = configuration @register_map = register_map @need_children = register_map.need_children? def_delegators(:@register_map, *@register_map.fields) end |
Instance Attribute Details
#configuration ⇒ Object (readonly)
Returns the value of attribute configuration.
15 16 17 |
# File 'lib/rggen/output_base/component.rb', line 15 def configuration @configuration end |
#output_directory=(value) ⇒ Object
Sets the attribute output_directory
16 17 18 |
# File 'lib/rggen/output_base/component.rb', line 16 def output_directory=(value) @output_directory = value end |
Instance Method Details
#add_item(item) ⇒ Object
18 19 20 21 |
# File 'lib/rggen/output_base/component.rb', line 18 def add_item(item) super(item) def_object_delegators(@items.last, *item.exported_methods) end |
#build ⇒ Object
23 24 25 26 |
# File 'lib/rggen/output_base/component.rb', line 23 def build items.each(&:build) children.each(&:build) end |
#generate_code(kind, mode, buffer = nil) ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/rggen/output_base/component.rb', line 28 def generate_code(kind, mode, buffer = nil) buffer ||= CodeBlock.new generate_pre_code(kind, buffer) generate_main_code(kind, mode, buffer) generate_post_code(kind, buffer) buffer end |
#write_file(root_directory) ⇒ Object
36 37 38 39 40 41 42 43 44 45 |
# File 'lib/rggen/output_base/component.rb', line 36 def write_file(root_directory) directory = output_directory(root_directory) FileUtils.mkpath(directory) unless Dir.exist?(directory) items.each do |item| item.write_file(directory) end children.each do |child| child.write_file(directory) end end |