Module: Julewire::Core::Fields::Internal

Defined in:
lib/julewire/core/fields/internal.rb,
lib/julewire/core/fields/internal/deletion.rb

Defined Under Namespace

Modules: Deletion

Constant Summary collapse

FIELD_KEY_ERROR =
"field keys must be String or Symbol"
RECORD_STRING_KEY_ERROR =
"record must not use string keys"
RECORD_SYMBOL_KEY_ERROR =
"record keys must be Symbols"

Class Method Summary collapse

Class Method Details

.apply_delete_paths!(target, paths) ⇒ Object



31
# File 'lib/julewire/core/fields/internal.rb', line 31

def apply_delete_paths!(target, paths) = Deletion.apply_delete_paths!(target, paths)

.clear_delete_paths!(paths, fields) ⇒ Object



33
# File 'lib/julewire/core/fields/internal.rb', line 33

def clear_delete_paths!(paths, fields) = Deletion.clear_delete_paths!(paths, fields)

.deep_merge!(target, fields) ⇒ Object



37
38
39
40
41
42
43
44
45
# File 'lib/julewire/core/fields/internal.rb', line 37

def deep_merge!(target, fields)
  merge_values!(target, fields) do |value, existing|
    if existing.is_a?(Hash) && value.is_a?(Hash)
      deep_merge!(existing, value)
    else
      FieldSet.deep_symbolize_keys(value)
    end
  end
end

.deep_merge_owned!(target, fields) ⇒ Object



47
48
49
50
51
52
53
54
55
# File 'lib/julewire/core/fields/internal.rb', line 47

def deep_merge_owned!(target, fields)
  merge_owned_values!(target, fields) do |value, existing|
    if existing.is_a?(Hash) && value.is_a?(Hash)
      deep_merge_owned!(existing, value)
    else
      value
    end
  end
end

.delete_key!(target, key) ⇒ Object



19
20
21
# File 'lib/julewire/core/fields/internal.rb', line 19

def delete_key!(target, key)
  target.delete(normalize_key(key))
end

.frozen_copy(value) ⇒ Object



23
24
25
# File 'lib/julewire/core/fields/internal.rb', line 23

def frozen_copy(value)
  frozen_copy_with(value, preserve_truncation_metadata: false)
end

.frozen_owned_copy(value) ⇒ Object



27
28
29
# File 'lib/julewire/core/fields/internal.rb', line 27

def frozen_owned_copy(value)
  frozen_copy_with(value, preserve_truncation_metadata: true)
end

.merge_owned!(target, fields) ⇒ Object



57
58
59
# File 'lib/julewire/core/fields/internal.rb', line 57

def merge_owned!(target, fields)
  merge_owned_values!(target, fields) { |value, _existing| value }
end

.normalize_key(key) ⇒ Object

Raises:

  • (TypeError)


12
13
14
15
16
17
# File 'lib/julewire/core/fields/internal.rb', line 12

def normalize_key(key)
  return key.to_sym if key.is_a?(String)
  return key if key.instance_of?(Symbol)

  raise TypeError, FIELD_KEY_ERROR
end

.normalize_path(path) ⇒ Object



35
# File 'lib/julewire/core/fields/internal.rb', line 35

def normalize_path(path) = Deletion.normalize_path(path)