Module: Julewire::Core::Fields::FieldSet
- Defined in:
- lib/julewire/core/fields/field_set.rb
Constant Summary collapse
- VALUE_KEY =
:value
Class Method Summary collapse
-
.coerce(fields = nil, keyword_fields = nil, invalid: :ignore) ⇒ Object
Public ingress accepts String or Symbol keys.
- .deep_dup(value) ⇒ Object
- .deep_dup_owned(value) ⇒ Object
- .deep_symbolize_keys(value) ⇒ Object
- .deep_symbolize_owned_keys(value) ⇒ Object
- .frozen_copy(value) ⇒ Object
- .merge(left, right) ⇒ Object
- .merge!(target, fields) ⇒ Object
- .value_for(hash, key, default: nil) ⇒ Object
Class Method Details
.coerce(fields = nil, keyword_fields = nil, invalid: :ignore) ⇒ Object
Public ingress accepts String or Symbol keys. Core stores Symbol keys after normalization so extension contracts stay simple.
19 20 21 22 23 24 |
# File 'lib/julewire/core/fields/field_set.rb', line 19 def coerce(fields = nil, keyword_fields = nil, invalid: :ignore) validate_invalid_mode!(invalid) coerced = {} coerce_fields!(coerced, fields, invalid: invalid) unless fields.nil? merge!(coerced, keyword_fields) end |
.deep_dup(value) ⇒ Object
40 41 42 |
# File 'lib/julewire/core/fields/field_set.rb', line 40 def deep_dup(value) deep_dup_with(value, preserve_truncation_metadata: false) end |
.deep_dup_owned(value) ⇒ Object
44 45 46 |
# File 'lib/julewire/core/fields/field_set.rb', line 44 def deep_dup_owned(value) deep_dup_with(value, preserve_truncation_metadata: true) end |
.deep_symbolize_keys(value) ⇒ Object
48 49 50 |
# File 'lib/julewire/core/fields/field_set.rb', line 48 def deep_symbolize_keys(value) deep_symbolize_keys_with(value, preserve_truncation_metadata: false) end |
.deep_symbolize_owned_keys(value) ⇒ Object
52 53 54 |
# File 'lib/julewire/core/fields/field_set.rb', line 52 def deep_symbolize_owned_keys(value) deep_symbolize_keys_with(value, preserve_truncation_metadata: true) end |
.frozen_copy(value) ⇒ Object
56 57 58 |
# File 'lib/julewire/core/fields/field_set.rb', line 56 def frozen_copy(value) Internal.frozen_copy(value) end |
.merge(left, right) ⇒ Object
26 27 28 |
# File 'lib/julewire/core/fields/field_set.rb', line 26 def merge(left, right) merge!(deep_symbolize_keys(left), right) end |
.merge!(target, fields) ⇒ Object
30 31 32 33 34 35 36 37 38 |
# File 'lib/julewire/core/fields/field_set.rb', line 30 def merge!(target, fields) return target unless fields.is_a?(Hash) fields.each do |key, value| target[normalized_field_key(key)] = copy_field_value(value) end target end |
.value_for(hash, key, default: nil) ⇒ Object
60 61 62 63 64 |
# File 'lib/julewire/core/fields/field_set.rb', line 60 def value_for(hash, key, default: nil) return default unless hash.is_a?(Hash) hash.fetch(Internal.normalize_key(key), default) end |