Sha256: eed076eba2dec81bfd4edbb8c7735c1633d5cf3f5ac1fb24add7a36a30f69b4c
Contents?: true
Size: 929 Bytes
Versions: 1
Compression:
Stored size: 929 Bytes
Contents
# frozen_string_literal: true require 'xml/mapping_extensions' module Datacite module Mapping module EmptyNodeUtils def not_empty(element) return unless element text = element.text empty = text.nil? || text.strip.empty? warn "Ignoring empty element #{element}" if empty !empty end end # An {XML::Mapping::ArrayNode} that ignores empty tags, including tags # containing only blank text. class EmptyFilteringArrayNode < XML::Mapping::ArrayNode include EmptyNodeUtils def extract_attr_value(xml) elements = default_when_xpath_err { @reader_path.all(xml) } non_empty_elements = elements.select { |e| not_empty(e) } non_empty_elements.map { |e| unmarshal(e) } end def unmarshal(element) @unmarshaller.call(element) end end XML::Mapping.add_node_class EmptyFilteringArrayNode end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
datacite-mapping-0.3.0 | lib/datacite/mapping/empty_filtering_nodes.rb |