Sha256: 5640d9bee2d8f7e3d8dea80a29567454b02671e05c84dc62d55453f4571dfd47

Contents?: true

Size: 2 KB

Versions: 11

Compression:

Stored size: 2 KB

Contents

module Blacklight::Document
  module SemanticFields
    extend ActiveSupport::Concern

    module ClassMethods
      # Returns array of hashes of registered extensions. Each hash
      # has a :module_obj key and a :condition_proc key. Usually this
      # method is only used internally in #apply_extensions, but if you
   
      # Class-level method for accessing/setting semantic mappings
      # for solr stored fields. Can be set by local app, key is
      # a symbol for a semantic, value is a solr _stored_ field.
      #
      # Stored field can be single or multi-value. In some cases
      # clients may only use the first value from a multi-value field.
      #
      # Currently documented semantic tokens, not all may be
      # used by core BL, but some may be used by plugins present
      # or future. 
      # :title, :author, :year, :language => User-presentable strings. 
      def field_semantics
        @field_semantics ||= {}
      end  
    end
    
    # Returns a hash keyed by semantic tokens, value is an array of
    # strings. (Array to handle multi-value fields). If no value(s)
    # available, empty array is returned. 
    #
    # Default implementation here uses field_semantics
    # to just take values from Solr stored fields. 
    # Extensions can over-ride this method to provide better/different lookup,
    # but extensions should call super and modify hash returned, to avoid
    # unintentionally erasing values provided by other extensions. 
    def to_semantic_values
      unless @semantic_value_hash
        @semantic_value_hash = Hash.new([]) # default to empty array   
        self.class.field_semantics.each_pair do |key, field_name|
          value = self[field_name]
          # Make single and multi-values all arrays, so clients
          # don't have to know.
          unless value.nil?
            value = [value] unless value.kind_of?(Array)      
            @semantic_value_hash[key] = value
          end
        end
      end
      return @semantic_value_hash
    end    
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
blacklight-5.13.0 lib/blacklight/document/semantic_fields.rb
blacklight-5.11.3 lib/blacklight/document/semantic_fields.rb
blacklight-5.12.1 lib/blacklight/document/semantic_fields.rb
blacklight-5.12.0 lib/blacklight/document/semantic_fields.rb
blacklight-5.10.3 lib/blacklight/document/semantic_fields.rb
blacklight-5.11.2 lib/blacklight/document/semantic_fields.rb
blacklight-5.11.1 lib/blacklight/document/semantic_fields.rb
blacklight-5.11.0 lib/blacklight/document/semantic_fields.rb
blacklight-5.10.2 lib/blacklight/document/semantic_fields.rb
blacklight-5.10.1 lib/blacklight/document/semantic_fields.rb
blacklight-5.10.0 lib/blacklight/document/semantic_fields.rb