Sha256: 80bd370221aa34b411613f4056f670e1f4f3c63c8be02a7f6f4e21cd41d9af7f
Contents?: true
Size: 1.38 KB
Versions: 6
Compression:
Stored size: 1.38 KB
Contents
module ActiveFedora module Indexing class Descriptor attr_reader :index_type def initialize(*args) if args.last.is_a? Hash opts = args.pop @converter = opts[:converter] @type_required = opts[:requires_type] end @index_type = args raise Solrizer::InvalidIndexDescriptor, "Invalid index type passed to Sorizer.solr_name. It should be an array like [:string, :indexed, :stored, :multivalued]. You provided: `#{@index_type}'" unless index_type.is_a? Array end def name_and_converter(field_name, args = nil) args ||= {} field_type = args[:type] if type_required? raise ArgumentError, "Must provide a :type argument when index_type is `#{self}' for #{field_name}" unless field_type end [field_name.to_s + suffix(field_type), converter(field_type)] end def type_required? @type_required end def evaluate_suffix(field_type) Suffix.new(index_type.first.is_a?(Proc) ? index_type.first.call(field_type) : index_type.dup) end protected # Suffix can be overridden if you want a different method of grabbing the suffix def suffix(field_type) evaluate_suffix(field_type).to_s end def converter(field_type) @converter.call(field_type) if @converter end end end end
Version data entries
6 entries across 6 versions & 1 rubygems