Class: ActiveFedora::NomDatastream
Constant Summary
AttributeMethods::AttrNames
Instance Attribute Summary
Attributes inherited from File
#mime_type
Class Method Summary
collapse
Instance Method Summary
collapse
#autocreate?, #content, #content=, #content_changed?, #ng_xml, #ng_xml=, #ng_xml_changed?, #ng_xml_doesnt_change!, #ng_xml_will_change!, #refresh_attributes, #remote_content, #to_xml, #xml_loaded
Methods inherited from File
#attribute_will_change!, #changed?, #check_fixity, #content_changed?, #datastream_will_change!, #default_attributes, #default_attributes=, #described_by, #digest, #dirty_size, #empty?, #exists!, #freeze, #frozen?, #has_content?, #initialize, #inspect, #ldp_connection, #ldp_source, #metadata, #metadata?, #new_record?, #original_name, #original_name=, #persisted_size, #reload, #remote_content, #reset, #size, #uri, #uri=
#create_version, #has_versions?, #model_type, #restore_version, #versions
#authorization_key, #headers, #stream
#content, #content=, #retrieve_content, #save
#[], #[]=, #attribute_names, #attributes
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object
54
55
56
57
58
59
60
|
# File 'lib/active_fedora/nom_datastream.rb', line 54
def method_missing method, *args, &block
if ng_xml.respond_to? method
ng_xml.send(method, *args, &block)
else
super
end
end
|
Class Method Details
.decorate_ng_xml(xml) ⇒ Object
25
26
27
28
29
|
# File 'lib/active_fedora/nom_datastream.rb', line 25
def self.decorate_ng_xml(xml)
xml.set_terminology terminology_options, &terminology
xml.nom!
xml
end
|
.default_attributes ⇒ Object
21
22
23
|
# File 'lib/active_fedora/nom_datastream.rb', line 21
def self.default_attributes
super.merge(:mimeType => 'text/xml')
end
|
.set_terminology(options = {}, &block) ⇒ Object
8
9
10
11
|
# File 'lib/active_fedora/nom_datastream.rb', line 8
def self.set_terminology(options = {}, &block)
@terminology_options = options || {}
@terminology = block
end
|
.terminology ⇒ Object
17
18
19
|
# File 'lib/active_fedora/nom_datastream.rb', line 17
def self.terminology
@terminology
end
|
.terminology_options ⇒ Object
13
14
15
|
# File 'lib/active_fedora/nom_datastream.rb', line 13
def self.terminology_options
@terminology_options
end
|
Instance Method Details
#respond_to?(*args) ⇒ Boolean
62
63
64
|
# File 'lib/active_fedora/nom_datastream.rb', line 62
def respond_to? *args
super || self.class.terminology.respond_to?(*args)
end
|
#serialize! ⇒ Object
31
32
33
|
# File 'lib/active_fedora/nom_datastream.rb', line 31
def serialize!
self.content = @ng_xml.to_s if @ng_xml
end
|
#to_solr ⇒ Object
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/active_fedora/nom_datastream.rb', line 35
def to_solr
solr_doc = {}
ng_xml.terminology.flatten.select { |x| x.options[:index] }.each do |term|
term.values.each do |v|
Array(term.options[:index]).each do |index_as|
solr_doc[index_as] ||= []
if v.is_a? Nokogiri::XML::Node
solr_doc[index_as] << v.text
else
solr_doc[index_as] << v
end
end
end
end
solr_doc
end
|