class ParamsReady::Parameter::HashSetParameterDefinition
Attributes
type[R]
values[R]
Public Class Methods
new(*args, type: :boolean, **opts)
click to toggle source
Calls superclass method
ParamsReady::Parameter::AbstractHashParameterDefinition::new
# File lib/params_ready/parameter/hash_set_parameter.rb, line 66 def initialize(*args, type: :boolean, **opts) @type = type @values = {} super *args, **opts end
Public Instance Methods
add_child(child, value:)
click to toggle source
Calls superclass method
ParamsReady::Parameter::AbstractHashParameterDefinition#add_child
# File lib/params_ready/parameter/hash_set_parameter.rb, line 89 def add_child(child, value:) value = value.nil? ? child.name : value if @values.key(value).nil? @values[child.name] = value else raise ParamsReadyError, "Value '#{value}' already taken by '#{@values.key(value)}'" end super child end
ensure_canonical(set)
click to toggle source
# File lib/params_ready/parameter/hash_set_parameter.rb, line 72 def ensure_canonical(set) raise ParamsReadyError, "Unexpected default type: #{set.class.name}" unless set.is_a?(Set) context = Format.instance(:backend) value, _validator = try_canonicalize set, context, nil, freeze: true return value if value.length == set.length extra_keys = set.reject do |key| value.key?(key) || value.key?(key.to_s) end.map do |key| "'#{key.to_s}'" end.join(", ") raise ParamsReadyError, "extra elements found -- #{extra_keys}" if extra_keys.length > 0 value end