class RgGen::Core::InputBase::InputData

Attributes

children[R]
layer[R]

Public Class Methods

new(layer, valid_value_lists) { |self| ... } click to toggle source
# File lib/rggen/core/input_base/input_data.rb, line 7
def initialize(layer, valid_value_lists)
  @layer = layer
  @valid_value_lists = valid_value_lists
  @values = Hash.new(NAValue)
  @children = []
  define_setter_methods
  block_given? && yield(self)
end

Public Instance Methods

[](value_name) click to toggle source
# File lib/rggen/core/input_base/input_data.rb, line 28
def [](value_name)
  @values[value_name]
end
[]=(value_name, position_or_value, value = nil) click to toggle source
# File lib/rggen/core/input_base/input_data.rb, line 24
def []=(value_name, position_or_value, value = nil)
  value(value_name, value || position_or_value, position_or_value)
end
child(layer, value_list = nil, &block) click to toggle source
# File lib/rggen/core/input_base/input_data.rb, line 39
def child(layer, value_list = nil, &block)
  create_child_data(layer) do |child_data|
    child_data.build_by_block(&block)
    child_data.values(value_list)
    @children << child_data
  end
end
load_file(file) click to toggle source
# File lib/rggen/core/input_base/input_data.rb, line 47
        def load_file(file)
          build_by_block(&instance_eval(<<~BODY, file, 1))
            -> { #{File.binread(file)} }  # -> { File.binread(file) }
          BODY
        end
value(value_name, value, position = nil) click to toggle source
# File lib/rggen/core/input_base/input_data.rb, line 18
def value(value_name, value, position = nil)
  symbolized_name = value_name.to_sym
  valid_value?(symbolized_name) &&
    assign_value(symbolized_name, value, position)
end
values(value_list = nil, position = nil) click to toggle source
# File lib/rggen/core/input_base/input_data.rb, line 32
def values(value_list = nil, position = nil)
  value_list && Hash(value_list).each { |n, v| value(n, v, position) }
  @values
end

Protected Instance Methods

build_by_block(&block) click to toggle source
# File lib/rggen/core/input_base/input_data.rb, line 102
def build_by_block(&block)
  block_given? && Docile.dsl_eval(self, &block)
end

Private Instance Methods

assign_value(value_name, value, position) click to toggle source
# File lib/rggen/core/input_base/input_data.rb, line 59
def assign_value(value_name, value, position)
  @values[value_name] =
    case value
    when InputValue
      value
    else
      InputValue.new(value, position)
    end
end
child_data_class() click to toggle source
# File lib/rggen/core/input_base/input_data.rb, line 96
def child_data_class
  self.class
end
create_child_data(layer, &block) click to toggle source
# File lib/rggen/core/input_base/input_data.rb, line 92
def create_child_data(layer, &block)
  child_data_class.new(layer, @valid_value_lists, &block)
end
define_setter_method(value_name) click to toggle source
# File lib/rggen/core/input_base/input_data.rb, line 73
def define_setter_method(value_name)
  define_singleton_method(value_name) do |value, position = nil|
    value_setter(value_name, value, position)
  end
end
define_setter_methods() click to toggle source
# File lib/rggen/core/input_base/input_data.rb, line 69
def define_setter_methods
  @valid_value_lists[layer].each(&method(:define_setter_method))
end
include_docile_path?(caller_location) click to toggle source
# File lib/rggen/core/input_base/input_data.rb, line 88
def include_docile_path?(caller_location)
  caller_location.path.include?('docile')
end
position_from_caller() click to toggle source
# File lib/rggen/core/input_base/input_data.rb, line 83
def position_from_caller
  locations = caller_locations(3, 2)
  include_docile_path?(locations[0]) && locations[1] || locations[0]
end
valid_value?(value_name) click to toggle source
# File lib/rggen/core/input_base/input_data.rb, line 55
def valid_value?(value_name)
  @valid_value_lists[layer].include?(value_name)
end
value_setter(value_name, value, position) click to toggle source
# File lib/rggen/core/input_base/input_data.rb, line 79
def value_setter(value_name, value, position)
  value(value_name, value, position || position_from_caller)
end