Module: SolidObjects::Serialization
- Defined in:
- lib/solid_objects/serialization.rb,
sig/generated/lib/solid_objects/serialization.rbs
Constant Summary collapse
- MAX_NESTING =
100
Class Method Summary collapse
- .deep_copy(value) ⇒ Object
- .dump(value, max_bytes: nil) ⇒ Object
- .load(value) ⇒ Object
- .readonly_copy(value) ⇒ Object
Class Method Details
.deep_copy(value) ⇒ Object
30 31 32 33 34 |
# File 'lib/solid_objects/serialization.rb', line 30 def deep_copy(value) JSON.parse(JSON.generate(normalize(value), max_nesting: MAX_NESTING)) rescue JSON::GeneratorError, JSON::ParserError, EncodingError => error raise InvalidPayload, error. end |
.dump(value, max_bytes: nil) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/solid_objects/serialization.rb', line 9 def dump(value, max_bytes: nil) normalized = normalize(value) encoded = JSON.generate(normalized, max_nesting: MAX_NESTING) if max_bytes && encoded.bytesize > max_bytes raise PayloadTooLarge, "serialized value exceeds #{max_bytes} bytes" end normalized rescue JSON::GeneratorError, EncodingError => error raise InvalidPayload, error. end |
.load(value) ⇒ Object
23 24 25 26 27 |
# File 'lib/solid_objects/serialization.rb', line 23 def load(value) return nil if value.nil? normalize(value) end |
.readonly_copy(value) ⇒ Object
37 38 39 |
# File 'lib/solid_objects/serialization.rb', line 37 def readonly_copy(value) freeze_recursively(deep_copy(value)) end |