Class: Julewire::Core::Serialization::BoundedTransform

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

Constant Summary collapse

CONTINUE =
Core.sentinel(:continue)

Constants inherited from BoundedTraversal

Julewire::Core::Serialization::BoundedTraversal::DEFAULT_MAX_ARRAY_ITEMS, Julewire::Core::Serialization::BoundedTraversal::DEFAULT_MAX_DEPTH, Julewire::Core::Serialization::BoundedTraversal::DEFAULT_MAX_HASH_KEYS, Julewire::Core::Serialization::BoundedTraversal::DEFAULT_MAX_STRING_BYTES, Julewire::Core::Serialization::BoundedTraversal::MAX_DEPTH_VALUE, Julewire::Core::Serialization::BoundedTraversal::TRUNCATED_SUFFIX, Julewire::Core::Serialization::BoundedTraversal::TRUNCATION_METADATA_KEY

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(max_depth: DEFAULT_MAX_DEPTH, max_string_bytes: DEFAULT_MAX_STRING_BYTES, max_array_items: DEFAULT_MAX_ARRAY_ITEMS, max_hash_keys: DEFAULT_MAX_HASH_KEYS, max_depth_value: MAX_DEPTH_VALUE, truncation_key: TRUNCATION_METADATA_KEY.to_sym, track_paths: nil, &block) ⇒ BoundedTransform

Returns a new instance of BoundedTransform.



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/julewire/core/serialization/bounded_transform.rb', line 16

def initialize(
  max_depth: DEFAULT_MAX_DEPTH,
  max_string_bytes: DEFAULT_MAX_STRING_BYTES,
  max_array_items: DEFAULT_MAX_ARRAY_ITEMS,
  max_hash_keys: DEFAULT_MAX_HASH_KEYS,
  max_depth_value: MAX_DEPTH_VALUE,
  truncation_key: TRUNCATION_METADATA_KEY.to_sym,
  track_paths: nil,
  &block
)
  super(
    max_array_items: max_array_items,
    max_depth: max_depth,
    max_depth_value: max_depth_value,
    max_hash_keys: max_hash_keys,
    max_string_bytes: max_string_bytes,
    truncation_key: truncation_key
  )
  @transform = block
  @prepare_values = !@transform.nil?
  @track_paths = @prepare_values && !track_paths.equal?(false)
end

Class Method Details

.call(value) ⇒ Object



11
12
13
# File 'lib/julewire/core/serialization/bounded_transform.rb', line 11

def call(value, **, &)
  new(**, &).call(value)
end

Instance Method Details

#call(value) ⇒ Object



39
40
41
42
43
44
# File 'lib/julewire/core/serialization/bounded_transform.rb', line 39

def call(value)
  @root = value
  walk(value)
ensure
  @root = nil
end