Sha256: 358e8a85475240c8ee31367c0623393aba6d39a8a5c9aa2870d4eb1b2e54843a
Contents?: true
Size: 1.43 KB
Versions: 5
Compression:
Stored size: 1.43 KB
Contents
module Ddr module Datastreams class MetadataDatastream < ActiveFedora::NtriplesRDFDatastream # ASCII control chars, except newline ILLEGAL_CHARS = Regexp.new('[\x00-\x09\x0B-\x1F]') def self.term_names properties.keys.map(&:to_sym).sort end # Returns ActiveTriplesTerm now that this is an RDF datastream def values(term) term == :format ? self.format : self.send(term) end # Update term with values # Note that empty values (nil or "") are rejected from values array def set_values(term, values) vals = Array(values) .map { |v| sanitize_value(v) } .reject { |v| reject_value?(v) } begin self.send("#{term}=", vals) rescue NoMethodError raise ArgumentError, "No such term: #{term}" end end # Add value to term # Note that empty value (nil or "") is not added def add_value(term, value) vals = values(term).to_a << value set_values(term, vals) end def content_changed? # Patches a bug in AF RDF datastreams where # Content appears to change from nil to empty string super && !empty? end private def sanitize_value(value) value .to_s .strip .gsub(ILLEGAL_CHARS, "") end def reject_value?(value) value.blank? end end end end
Version data entries
5 entries across 5 versions & 1 rubygems