class RgGen::Core::Builder::ComponentRegistry

Public Class Methods

new(component_name, builder) click to toggle source
# File lib/rggen/core/builder/component_registry.rb, line 7
def initialize(component_name, builder)
  @component_name = component_name
  @builder = builder
  @entries = []
end

Public Instance Methods

build_factory() click to toggle source
# File lib/rggen/core/builder/component_registry.rb, line 23
def build_factory
  build_factories.first.tap(&:root_factory)
end
register_component(layers = nil, &block) click to toggle source
# File lib/rggen/core/builder/component_registry.rb, line 13
def register_component(layers = nil, &block)
  Array(layers || @builder.register_map_layers).each do |layer|
    @entries << create_new_entry(layer, &block)
  end
end
register_global_component(&block) click to toggle source
# File lib/rggen/core/builder/component_registry.rb, line 19
def register_global_component(&block)
  @entries << create_new_entry(nil, &block)
end

Private Instance Methods

add_feature_registry(layer, feature_registry) click to toggle source
# File lib/rggen/core/builder/component_registry.rb, line 36
def add_feature_registry(layer, feature_registry)
  feature_registry &&
    @builder.add_feature_registry(@component_name, layer, feature_registry)
end
build_factories() click to toggle source
# File lib/rggen/core/builder/component_registry.rb, line 41
def build_factories
  factories =
    @entries
      .map(&:build_factory)
      .map { |f| [f.layer, f] }.to_h
  factories.each_value { |f| f.component_factories factories }
  factories.values
end
create_new_entry(layer, &block) click to toggle source
# File lib/rggen/core/builder/component_registry.rb, line 29
def create_new_entry(layer, &block)
  entry = ComponentEntry.new(@component_name, layer)
  Docile.dsl_eval(entry, layer, &block)
  add_feature_registry(layer, entry.feature_registry)
  entry
end