Sha256: afb97e22783e5ebab3f2576a0fc0a0969f7189138a81e64baee98988b0db6599
Contents?: true
Size: 930 Bytes
Versions: 3
Compression:
Stored size: 930 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
3 entries across 3 versions & 1 rubygems