class RgGen::Core::Builder::Builder

Constants

ALL_LAYERS
COMPONENT_REGISTRIES
REGISTER_MAP_LAYERS

Attributes

plugin_manager[R]

Public Class Methods

new() click to toggle source
# File lib/rggen/core/builder/builder.rb, line 9
def initialize
  initialize_component_registries
  initialize_layers
  @plugin_manager = PluginManager.new(self)
end

Public Instance Methods

add_feature_registry(name, target_layer, registry) click to toggle source
# File lib/rggen/core/builder/builder.rb, line 39
def add_feature_registry(name, target_layer, registry)
  target_layers =
    if target_layer
      Array(@layers[target_layer])
    else
      @layers.values
    end
  target_layers
    .each { |layer| layer.add_feature_registry(name, registry) }
end
build_factories(type, targets) click to toggle source
# File lib/rggen/core/builder/builder.rb, line 76
def build_factories(type, targets)
  registries =
    if targets.empty?
      @component_registries[type]
    else
      @component_registries[type].slice(*targets)
    end
  registries.each_value.map(&:build_factory)
end
build_factory(type, component) click to toggle source
# File lib/rggen/core/builder/builder.rb, line 72
def build_factory(type, component)
  @component_registries[type][component].build_factory
end
delete(layer, *args) click to toggle source
# File lib/rggen/core/builder/builder.rb, line 86
def delete(layer, *args)
  @layers.key?(layer) && @layers[layer].delete(*args)
end
disable(layer, *args) click to toggle source
# File lib/rggen/core/builder/builder.rb, line 68
def disable(layer, *args)
  @layers.key?(layer) && @layers[layer].disable(*args)
end
disable_all() click to toggle source
# File lib/rggen/core/builder/builder.rb, line 64
def disable_all
  @layers.each_value(&:disable)
end
enable(layer, *args) click to toggle source
# File lib/rggen/core/builder/builder.rb, line 60
def enable(layer, *args)
  @layers[layer].enable(*args)
end
input_component_registry(name, &body) click to toggle source
# File lib/rggen/core/builder/builder.rb, line 17
def input_component_registry(name, &body)
  component_registry(:input, name, &body)
end
output_component_registry(name, &body) click to toggle source
# File lib/rggen/core/builder/builder.rb, line 21
def output_component_registry(name, &body)
  component_registry(:output, name, &body)
end
register_input_components() click to toggle source
# File lib/rggen/core/builder/builder.rb, line 90
def register_input_components
  Configuration.setup(self)
  RegisterMap.setup(self)
end
register_map_layers() click to toggle source
# File lib/rggen/core/builder/builder.rb, line 35
def register_map_layers
  REGISTER_MAP_LAYERS
end

Private Instance Methods

component_registry(type, name, &body) click to toggle source
# File lib/rggen/core/builder/builder.rb, line 129
def component_registry(type, name, &body)
  registries = @component_registries[type]
  registries.key?(name) ||
    (registries[name] = COMPONENT_REGISTRIES[type].new(name, self))
  body && Docile.dsl_eval(registries[name], &body) || registries[name]
end
initialize_component_registries() click to toggle source
# File lib/rggen/core/builder/builder.rb, line 101
def initialize_component_registries
  @component_registries = {}
  [:input, :output].each do |type|
    @component_registries[type] = Hash.new do |_, component_name|
      raise BuilderError.new("unknown component: #{component_name}")
    end
  end
end
initialize_layers() click to toggle source
# File lib/rggen/core/builder/builder.rb, line 118
def initialize_layers
  @layers = Hash.new do |_, layer_name|
    raise BuilderError.new("unknown layer: #{layer_name}")
  end
  ALL_LAYERS.each { |layer| @layers[layer] = Layer.new(layer) }
end