Class: RgGen::OutputBase::Item

Inherits:
Base::Item show all
Includes:
Base::HierarchicalItemAccessors
Defined in:
lib/rggen/output_base/item.rb

Direct Known Subclasses

CHeader::Item, RAL::Item, RTL::Item

Constant Summary collapse

CODE_GENERATION_METHODS =
{
  pre:  :generate_pre_code,
  main: :generate_code,
  post: :generate_post_code
}

Instance Attribute Summary

Attributes inherited from Base::Item

#owner

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base::Item

#available?, available?, define_helpers, inherit_class_instance_variable

Methods included from Forwardable

#def_class_delegator, #def_class_delegators

Constructor Details

#initialize(owner) ⇒ Item

Returns a new instance of Item.



70
71
72
73
# File 'lib/rggen/output_base/item.rb', line 70

def initialize(owner)
  super(owner)
  define_hierarchical_item_accessors
end

Class Method Details

.inherited(subclass) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/rggen/output_base/item.rb', line 57

def self.inherited(subclass)
  super(subclass)
  [:@builders, :@exported_methods].each do |v|
    subclass.inherit_class_instance_variable(v, self, &:dup)
  end
  if @code_generators && @code_generators.size > 0
    subclass.instance_variable_set(
      :@code_generators,
      Hash[*@code_generators.flat_map { |k, g| [k, g.copy] }]
    )
  end
end

Instance Method Details

#buildObject



80
81
82
83
84
85
# File 'lib/rggen/output_base/item.rb', line 80

def build
  return if builders.nil?
  builders.each do |builder|
    instance_exec(&builder)
  end
end

#write_file(output_directory = nil) ⇒ Object



94
95
96
97
# File 'lib/rggen/output_base/item.rb', line 94

def write_file(output_directory = nil)
  return if file_writer.nil?
  file_writer.write_file(self, output_directory)
end