Sha256: 45ca5538f8f1e0afc3b7d6b6eb2ff639f4cfe51d500166100341f6dddedb1696
Contents?: true
Size: 1.8 KB
Versions: 2
Compression:
Stored size: 1.8 KB
Contents
# frozen_string_literal: true module Blacklight::Document module SemanticFields extend ActiveSupport::Concern class_methods do # 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 @semantic_value_hash ||= self.class.field_semantics.each_with_object(Hash.new { |hash, key| hash[key] = [] }) do |(key, field_names), hash| ## # Handles single string field_name or an array of field_names value = Array.wrap(field_names).map { |field_name| self[field_name] }.flatten.compact # Make single and multi-values all arrays, so clients # don't have to know. hash[key] = value unless value.empty? end @semantic_value_hash ||= {} end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
blacklight-7.40.0 | app/models/concerns/blacklight/document/semantic_fields.rb |
blacklight-7.39.0 | app/models/concerns/blacklight/document/semantic_fields.rb |