Sha256: b54916a984e84affde696bacea018eff92151a3289880edce7030abdecd443df

Contents?: true

Size: 1.4 KB

Versions: 23

Compression:

Stored size: 1.4 KB

Contents

require "nom"

module ActiveFedora
  class NomDatastream < File
    include Datastreams::NokogiriDatastreams

    def self.set_terminology(options = {}, &block)
      @terminology_options = options || {}
      @terminology = block
    end

    class << self
      attr_reader :terminology_options
    end

    class << self
      attr_reader :terminology
    end

    def self.decorate_ng_xml(xml)
      xml.set_terminology terminology_options, &terminology
      xml.nom!
      xml
    end

    def serialize!
      self.content = @ng_xml.to_s if @ng_xml
    end

    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] ||= []
            solr_doc[index_as] << if v.is_a? Nokogiri::XML::Node
                                    v.text
                                  else
                                    v
                                  end
          end
        end
      end

      solr_doc
    end

    def method_missing(method, *args, &block)
      if ng_xml.respond_to? method
        ng_xml.send(method, *args, &block)
      else
        super
      end
    end

    def respond_to?(*args)
      super || self.class.terminology.respond_to?(*args)
    end

    protected

      def default_mime_type
        'text/xml'
      end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
active-fedora-9.7.3 lib/active_fedora/nom_datastream.rb
active-fedora-9.7.2 lib/active_fedora/nom_datastream.rb
active-fedora-10.0.0 lib/active_fedora/nom_datastream.rb
active-fedora-10.0.0.beta4 lib/active_fedora/nom_datastream.rb
active-fedora-10.0.0.beta3 lib/active_fedora/nom_datastream.rb
active-fedora-10.0.0.beta2 lib/active_fedora/nom_datastream.rb
active-fedora-10.0.0.beta1 lib/active_fedora/nom_datastream.rb
active-fedora-9.13.0 lib/active_fedora/nom_datastream.rb
active-fedora-9.12.0 lib/active_fedora/nom_datastream.rb
active-fedora-9.11.0 lib/active_fedora/nom_datastream.rb
active-fedora-9.10.4 lib/active_fedora/nom_datastream.rb
active-fedora-9.10.3 lib/active_fedora/nom_datastream.rb
active-fedora-9.10.2 lib/active_fedora/nom_datastream.rb
active-fedora-9.10.1 lib/active_fedora/nom_datastream.rb
active-fedora-9.10.0 lib/active_fedora/nom_datastream.rb
active-fedora-9.10.0.pre2 lib/active_fedora/nom_datastream.rb
active-fedora-9.10.0.pre1 lib/active_fedora/nom_datastream.rb
active-fedora-9.9.1 lib/active_fedora/nom_datastream.rb
active-fedora-9.9.0 lib/active_fedora/nom_datastream.rb
active-fedora-9.8.2 lib/active_fedora/nom_datastream.rb