Class: ParamsReady::Parameter::HashSetParameterDefinition
- Inherits:
-
AbstractHashParameterDefinition
- Object
- AbstractDefinition
- Definition
- AbstractHashParameterDefinition
- ParamsReady::Parameter::HashSetParameterDefinition
- Defined in:
- lib/params_ready/parameter/hash_set_parameter.rb
Instance Attribute Summary collapse
-
#type ⇒ Object
readonly
Returns the value of attribute type.
-
#values ⇒ Object
readonly
Returns the value of attribute values.
Attributes inherited from AbstractHashParameterDefinition
Attributes inherited from Definition
Attributes inherited from AbstractDefinition
Instance Method Summary collapse
- #add_child(child, value:) ⇒ Object
- #ensure_canonical(set) ⇒ Object
-
#initialize(*args, type: :boolean, **opts) ⇒ HashSetParameterDefinition
constructor
A new instance of HashSetParameterDefinition.
Methods inherited from AbstractHashParameterDefinition
#child_definition, #duplicate_value, #freeze_value, #has_child?, #infer_default, #set_default
Methods inherited from Definition
#canonical_default, #default_defined?, #duplicate_default, #finish, #local?, #memoize?, #name_for_formatter, #no_output?, #postprocess, #preprocess, #set_local, #set_postprocessor, #set_preprocessor
Methods inherited from AbstractDefinition
#create, #finish, #from_hash, #from_input, #normalize_alternative_name, #parameter_class
Methods included from Extensions::Freezer
#freeze_variable, #freeze_variables, #variables_to_freeze
Methods included from Extensions::Finalizer
Methods included from Extensions::ClassReaderWriter
Methods included from Extensions::LateInit
Methods included from Extensions::Collection
Methods included from Extensions::Finalizer::InstanceMethods
Methods included from Extensions::Freezer::InstanceMethods
Constructor Details
#initialize(*args, type: :boolean, **opts) ⇒ HashSetParameterDefinition
Returns a new instance of HashSetParameterDefinition.
66 67 68 69 70 |
# File 'lib/params_ready/parameter/hash_set_parameter.rb', line 66 def initialize(*args, type: :boolean, **opts) @type = type @values = {} super *args, **opts end |
Instance Attribute Details
#type ⇒ Object (readonly)
Returns the value of attribute type.
60 61 62 |
# File 'lib/params_ready/parameter/hash_set_parameter.rb', line 60 def type @type end |
#values ⇒ Object (readonly)
Returns the value of attribute values.
60 61 62 |
# File 'lib/params_ready/parameter/hash_set_parameter.rb', line 60 def values @values end |
Instance Method Details
#add_child(child, value:) ⇒ Object
89 90 91 92 93 94 95 96 97 98 |
# 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) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# 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 |