Sha256: af6b4b84e3da7eba9a88d8cb3a14182ced7a0ae0800bad0092116ddc974b15c2
Contents?: true
Size: 1.47 KB
Versions: 2
Compression:
Stored size: 1.47 KB
Contents
# frozen_string_literal: true require 'xml/mapping' module XML class XXPath attr_reader :xpathstr end end module Datacite module Mapping module ReadOnlyNodes def warn_reason @warn_reason ||= @options[:warn_reason] end def value_from(obj) obj.send(@attrname) end def value_str(val) return "[ #{val.map(&:to_s).join(', ')} ]" if val.is_a?(Array) "'#{val}'" end def obj_to_xml(obj, _xml) val = value_from(obj) return unless val warn_ignored(val) end def warn_ignored(val) warning = "ignoring #{@attrname} #{value_str(val)}" warning = "#{warn_reason}; #{warning}" if warn_reason ReadOnlyNodes.warn(warning) end # public to allow testing def self.warn(warning) super end end class ReadOnlyTextNode < XML::Mapping::TextNode def warn_ignored(val) raise ArgumentError, "Expected string, got #{val}" unless val.respond_to?(:strip) return if val.strip.empty? super end include ReadOnlyNodes end XML::Mapping.add_node_class ReadOnlyTextNode class ReadOnlyArrayNode < XML::Mapping::ArrayNode def warn_ignored(val) raise ArgumentError, "Expected array, got #{val}" unless val.respond_to?(:empty?) return if val.empty? super end include ReadOnlyNodes end XML::Mapping.add_node_class ReadOnlyArrayNode end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
datacite-mapping-0.4.1 | lib/datacite/mapping/read_only_nodes.rb |
datacite-mapping-0.4.0 | lib/datacite/mapping/read_only_nodes.rb |