lib/lutaml/xmi/parsers/xml.rb in lutaml-0.9.2 vs lib/lutaml/xmi/parsers/xml.rb in lutaml-0.9.3

- old
+ new

@@ -115,20 +115,35 @@ # @return [Array<Hash>] # @note xpath ./packagedElement[@xmi:type="uml:Enumeration"] def serialize_model_enums(package) package.packaged_element.select { |e| e.type?("uml:Enumeration") } .map do |enum| - # xpath .//ownedLiteral[@xmi:type="uml:EnumerationLiteral"] - owned_literals = enum.owned_literal.map do |owned_literal| - owned_literal.to_hash.transform_keys(&:to_sym) - end - { xmi_id: enum.id, name: enum.name, - values: owned_literals, + values: serialize_enum_owned_literal(enum), definition: doc_node_attribute_value(enum.id, "documentation"), stereotype: doc_node_attribute_value(enum.id, "stereotype"), + } + end + end + + # @param model [Shale::Mapper] + # @return [Hash] + # @note xpath .//ownedLiteral[@xmi:type="uml:EnumerationLiteral"] + def serialize_enum_owned_literal(enum) + owned_literals = enum.owned_literal.select do |owned_literal| + owned_literal.type? "uml:EnumerationLiteral" + end + + owned_literals.map do |owned_literal| + # xpath .//type + uml_type_id = owned_literal&.uml_type&.idref + + { + name: owned_literal.name, + type: lookup_entity_name(uml_type_id) || uml_type_id, + definition: lookup_attribute_documentation(owned_literal.id), } end end # @param model [Shale::Mapper]