class ParamsReady::Parameter::AbstractHashParameterDefinition
Attributes
key_map[R]
names[R]
Public Class Methods
new(*args, **options)
click to toggle source
Calls superclass method
# File lib/params_ready/parameter/abstract_hash_parameter.rb, line 162 def initialize(*args, **options) super *args, **options @key_map = nil @names = {} end
Public Instance Methods
add_child(child)
click to toggle source
# File lib/params_ready/parameter/abstract_hash_parameter.rb, line 194 def add_child(child) raise ParamsReadyError, "Not a parameter definition: '#{child.class.name}'" unless child.is_a?(AbstractDefinition) raise ParamsReadyError, "Name already there: '#{child.name}'" if @names.key?(child.name) raise ParamsReadyError, "Child can't be added after default has been set" if default_defined? @names[child.name] = child end
child_definition(name)
click to toggle source
# File lib/params_ready/parameter/abstract_hash_parameter.rb, line 168 def child_definition(name) raise ParamsReadyError, "No such name: #{name}" unless names.key? name names[name] end
duplicate_value(value)
click to toggle source
# File lib/params_ready/parameter/abstract_hash_parameter.rb, line 149 def duplicate_value(value) value.values.map do |param| [param.name, param.dup] end.to_h end
freeze_value(value)
click to toggle source
# File lib/params_ready/parameter/abstract_hash_parameter.rb, line 155 def freeze_value(value) value.values.each(&:freeze) value.freeze end
has_child?(name)
click to toggle source
# File lib/params_ready/parameter/abstract_hash_parameter.rb, line 173 def has_child?(name) names.key? name end
infer_default()
click to toggle source
# File lib/params_ready/parameter/abstract_hash_parameter.rb, line 182 def infer_default names.reduce({}) do |result, pair| child_def = pair[1] unless child_def.default_defined? raise ParamsReadyError, "Can't infer default, child '#{definition.name}' is not optional and has no default" unless child_def.optional? else result[child_def.name] = child_def.default end result end end
set_default(value)
click to toggle source
Calls superclass method
# File lib/params_ready/parameter/abstract_hash_parameter.rb, line 177 def set_default(value) value = infer_default if value == :inferred super(value) end