lib/lutaml/model/xml_adapter/nokogiri_adapter.rb in lutaml-model-0.3.19 vs lib/lutaml/model/xml_adapter/nokogiri_adapter.rb in lutaml-model-0.3.20

- old
+ new

@@ -31,24 +31,28 @@ options[:declaration] ? declaration(options) + xml_data : xml_data end private + def prefix_xml(xml, mapping, options) + if options.key?(:namespace_prefix) + options[:namespace_prefix] ? xml[options[:namespace_prefix]] : xml + elsif mapping.namespace_prefix + xml[mapping.namespace_prefix] + else + xml + end + end + def build_ordered_element(xml, element, options = {}) mapper_class = options[:mapper_class] || element.class xml_mapping = mapper_class.mappings_for(:xml) return xml unless xml_mapping attributes = build_attributes(element, xml_mapping)&.compact - prefixed_xml = if options.key?(:namespace_prefix) - options[:namespace_prefix] ? xml[options[:namespace_prefix]] : xml - elsif xml_mapping.namespace_prefix - xml[xml_mapping.namespace_prefix] - else - xml - end + prefixed_xml = prefix_xml(xml, xml_mapping, options) tag_name = options[:tag_name] || xml_mapping.root_element tag_name = "#{tag_name}_" if prefixed_xml.respond_to?(tag_name) prefixed_xml.public_send(tag_name, attributes) do if options.key?(:namespace_prefix) && !options[:namespace_prefix] @@ -144,9 +148,13 @@ def to_xml return text if text? build_xml.doc.root.to_xml + end + + def inner_xml + children.map(&:to_xml).join end def build_xml(builder = nil) builder ||= Builder::Nokogiri.build