Class: Ddr::Datastreams::MetadataDatastream

Inherits:
ActiveFedora::NtriplesRDFDatastream
  • Object
show all
Defined in:
lib/ddr/datastreams/metadata_datastream.rb

Constant Summary collapse

ILLEGAL_CHARS =

ASCII control chars, except newline

Regexp.new('[\x00-\x09\x0B-\x1F]')

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.term_namesObject



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