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