Class: Ddr::Datastreams::MetadataDatastream
- Inherits:
-
ActiveFedora::NtriplesRDFDatastream
- Object
- ActiveFedora::NtriplesRDFDatastream
- Ddr::Datastreams::MetadataDatastream
- Defined in:
- lib/ddr/datastreams/metadata_datastream.rb
Direct Known Subclasses
AdministrativeMetadataDatastream, DescriptiveMetadataDatastream
Constant Summary collapse
- ILLEGAL_CHARS =
ASCII control chars, except newline
Regexp.new('[\x00-\x09\x0B-\x1F]')
Class Method Summary collapse
Instance Method Summary collapse
-
#add_value(term, value) ⇒ Object
Add value to term Note that empty value (nil or “”) is not added.
- #content_changed? ⇒ Boolean
-
#set_values(term, values) ⇒ Object
Update term with values Note that empty values (nil or “”) are rejected from values array.
-
#values(term) ⇒ Object
Returns ActiveTriplesTerm now that this is an RDF datastream.
Class Method Details
.term_names ⇒ Object
8 9 10 |
# File 'lib/ddr/datastreams/metadata_datastream.rb', line 8 def self.term_names properties.keys.map(&:to_sym).sort end |
Instance Method Details
#add_value(term, value) ⇒ Object
Add value to term Note that empty value (nil or “”) is not added
32 33 34 35 |
# File 'lib/ddr/datastreams/metadata_datastream.rb', line 32 def add_value(term, value) vals = values(term).to_a << value set_values(term, vals) end |
#content_changed? ⇒ Boolean
37 38 39 40 41 |
# File 'lib/ddr/datastreams/metadata_datastream.rb', line 37 def content_changed? # Patches a bug in AF RDF datastreams where # Content appears to change from nil to empty string super && !empty? end |
#set_values(term, values) ⇒ Object
Update term with values Note that empty values (nil or “”) are rejected from values array
19 20 21 22 23 24 25 26 27 28 |
# File 'lib/ddr/datastreams/metadata_datastream.rb', line 19 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 |
#values(term) ⇒ Object
Returns ActiveTriplesTerm now that this is an RDF datastream
13 14 15 |
# File 'lib/ddr/datastreams/metadata_datastream.rb', line 13 def values(term) term == :format ? self.format : self.send(term) end |