Sha256: d9b2ed144d9d940b786a19c73f92525e059f7e4184746760898bfd6f4389f4e1
Contents?: true
Size: 1.74 KB
Versions: 3
Compression:
Stored size: 1.74 KB
Contents
require "nokogiri" #this class represents a MetadataDatastream, a special case of ActiveFedora::Datastream class ActiveFedora::NokogiriDatastream < ActiveFedora::Datastream include ActiveFedora::MetadataDatastreamHelper self.xml_model = Nokogiri::XML::Document attr_accessor :ng_xml #constructor, calls up to ActiveFedora::Datastream's constructor def initialize(attrs=nil) super @fields={} @ng_xml = self.class.xml_model.new() end def to_solr(solr_doc = Solr::Document.new) # :nodoc: fields.each do |field_key, field_info| if field_info.has_key?(:values) && !field_info[:values].nil? field_symbol = generate_solr_symbol(field_key, field_info[:type]) field_info[:values].each do |val| solr_doc << Solr::Field.new(field_symbol => val) end end end return solr_doc end def to_xml(xml = REXML::Document.new("<fields />")) #:nodoc: fields.each_pair do |field,field_info| el = REXML::Element.new("#{field.to_s}") if field_info[:element_attrs] field_info[:element_attrs].each{|k,v| el.add_attribute(k.to_s, v.to_s)} end field_info[:values].each do |val| el = el.clone el.text = val.to_s if xml.class == REXML::Document xml.root.elements.add(el) else xml.add(el) end end end return xml.to_s end # @tmpl ActiveFedora::MetadataDatastream # @node Nokogiri::XML::Node def self.from_xml(tmpl, node) # :nodoc: node.xpath("./foxml:datastreamVersion[last()]/foxml:xmlContent/fields/node()").each do |f| tmpl.send("#{f.name}_append", f.text) unless f.class == Nokogiri::XML::Text end tmpl.send(:dirty=, false) tmpl end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
active-fedora-1.1.6 | lib/active_fedora/nokogiri_datastream.rb |
active-fedora-1.1.5 | lib/active_fedora/nokogiri_datastream.rb |
active-fedora-1.1.4 | lib/active_fedora/nokogiri_datastream.rb |