Class: Lutaml::Store::ModelSerializer
- Inherits:
-
Object
- Object
- Lutaml::Store::ModelSerializer
- Defined in:
- lib/lutaml/store/model_serializer.rb
Overview
Single point of serialization/deserialization for Lutaml::Model objects. All registered models are Lutaml::Model::Serializable, so they uniformly support to_hash / from_hash. No duck-typing needed.
Constant Summary collapse
- METADATA_KEY =
"_class"- COMPOSITE_KEY =
"_composite_models"
Instance Method Summary collapse
- #deserialize(data, expected_class, registration = nil) ⇒ Object
- #serialize(model, registration = nil) ⇒ Object
Instance Method Details
#deserialize(data, expected_class, registration = nil) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/lutaml/store/model_serializer.rb', line 21 def deserialize(data, expected_class, registration = nil) validate_data!(data, expected_class) model_class = resolve_class(data[METADATA_KEY]) validate_polymorphic_compatibility!(model_class, expected_class) model_data = data.except(METADATA_KEY, COMPOSITE_KEY) if registration&.serializer registration.serializer.deserialize(model_data, model_class) else build_model(model_class, model_data) end end |
#serialize(model, registration = nil) ⇒ Object
12 13 14 15 16 17 18 19 |
# File 'lib/lutaml/store/model_serializer.rb', line 12 def serialize(model, registration = nil) hash_data = if registration&.serializer registration.serializer.serialize(model) else extract_hash(model) end hash_data.merge(METADATA_KEY => model.class.name) end |