Class: Julewire::Core::Serialization::ValueCopy

Inherits:
Object
  • Object
show all
Defined in:
lib/julewire/core/serialization/value_copy.rb

Constant Summary collapse

CIRCULAR_REFERENCE =
Core::CIRCULAR_REFERENCE

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(compact_empty:, freeze_values:, max_array_items:, max_depth:, max_hash_keys:, max_string_bytes:, preserve_truncation_metadata:, symbolize_keys:) ⇒ ValueCopy

Returns a new instance of ValueCopy.



106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/julewire/core/serialization/value_copy.rb', line 106

def initialize(compact_empty:, freeze_values:, max_array_items:, max_depth:, max_hash_keys:, max_string_bytes:,
               preserve_truncation_metadata:, symbolize_keys:)
  @compact_empty = compact_empty
  @freeze_values = freeze_values
  @max_array_items = validate_optional_limit(max_array_items, name: :max_array_items)
  @max_depth = max_depth
  @max_hash_keys = validate_optional_limit(max_hash_keys, name: :max_hash_keys)
  @max_string_bytes = validate_optional_limit(max_string_bytes, name: :max_string_bytes)
  @preserve_truncation_metadata = 
  @symbolize_keys = symbolize_keys
  @track_truncation = @max_array_items || @max_hash_keys || @max_string_bytes
end

Class Method Details

.call(value, compact_empty: false, freeze_values: false, max_array_items: nil, max_depth: NORMALIZATION_MAX_DEPTH, max_hash_keys: nil, max_string_bytes: nil, preserve_truncation_metadata: false, symbolize_keys: false) ⇒ Object

rubocop:disable Metrics/ParameterLists



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/julewire/core/serialization/value_copy.rb', line 78

def call( # rubocop:disable Metrics/ParameterLists
  value,
  compact_empty: false,
  freeze_values: false,
  max_array_items: nil,
  max_depth: NORMALIZATION_MAX_DEPTH,
  max_hash_keys: nil,
  max_string_bytes: nil,
  preserve_truncation_metadata: false,
  symbolize_keys: false
)
  new(
    compact_empty:,
    freeze_values:,
    max_array_items:,
    max_depth:,
    max_hash_keys:,
    max_string_bytes:,
    preserve_truncation_metadata:,
    symbolize_keys:
  ).call(value)
end

.omitted_empty?(value) ⇒ Boolean

Returns:

  • (Boolean)


101
102
103
# File 'lib/julewire/core/serialization/value_copy.rb', line 101

def omitted_empty?(value)
  value.nil? || (value.is_a?(Hash) && value.empty?) || (value.is_a?(Array) && value.empty?)
end

Instance Method Details

#call(value) ⇒ Object



119
120
121
# File 'lib/julewire/core/serialization/value_copy.rb', line 119

def call(value)
  traverse(value) { |root, depth| copy_value(root, depth) }
end