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