module Lutaml::Xml::Type::Serializers
def register_all!
def register_all! v = Lutaml::Model::Type::Value # String — value&.to_s v.register_format_type_serializer( :xml, Lutaml::Model::Type::String, to: ->(inst) { inst.value&.to_s }, from: ->(val) { Lutaml::Model::Type::String.cast(val) } ) # Float — value.to_s v.register_format_type_serializer( :xml, Lutaml::Model::Type::Float, to: ->(inst) { inst.value.to_s } ) # Boolean — value.to_s v.register_format_type_serializer( :xml, Lutaml::Model::Type::Boolean, to: ->(inst) { inst.value.to_s } ) # Time — ISO8601 with fractional seconds handling v.register_format_type_serializer( :xml, Lutaml::Model::Type::Time, to: lambda { |inst| return nil unless inst.value if inst.value.subsec.zero? inst.value.iso8601 else inst.value.iso8601(6).sub(/(\.\d{3})0{3}([+-])/, '\1\2') end } ) # DateTime — ISO8601 with Z for UTC v.register_format_type_serializer( :xml, Lutaml::Model::Type::DateTime, to: lambda { |inst| return nil unless inst.value result = Lutaml::Model::Type::DateTime.format_datetime_iso8601(inst.value) inst.value.offset.zero? ? result.sub(/\+00:00$/, "Z") : result } ) # Date — ISO8601 with Z for UTC v.register_format_type_serializer( :xml, Lutaml::Model::Type::Date, to: lambda { |inst| return nil unless inst.value result = Lutaml::Model::Type::Date.serialize(inst.value) result = result.sub(/\+00:00$/, "Z") if result.include?("+00:00") result } ) # TimeWithoutDate — delegates to self.class.serialize v.register_format_type_serializer( :xml, Lutaml::Model::Type::TimeWithoutDate, to: ->(inst) { Lutaml::Model::Type::TimeWithoutDate.serialize(inst.value) } ) # Symbol — :symbol: format v.register_format_type_serializer( :xml, Lutaml::Model::Type::Symbol, to: ->(inst) { ":#{inst.value}:" } ) # Hash — value (pass-through) v.register_format_type_serializer( :xml, Lutaml::Model::Type::Hash, to: lambda(&:value) ) # Reference — key&.to_s v.register_format_type_serializer( :xml, Lutaml::Model::Type::Reference, to: ->(inst) { inst.key&.to_s }, from: ->(val) { Lutaml::Model::Type::Reference.cast(val) } ) end