module Blacklight::Marc::Indexer::Dewey
Public Instance Methods
dewey_facets(options={})
click to toggle source
# File lib/blacklight/marc/indexer/dewey.rb, line 2 def dewey_facets(options={}) translation_map = (options[:translation_map] || "callnumber_map") unless translation_map.is_a? Traject::TranslationMap translation_map = Traject::TranslationMap.new(translation_map) end base = options[:base] || :hundreds lambda do |record, accumulator, context| vals = [] extractor = Traject::MarcExtractor.new('082a', options) vals = extractor.extract(record).select{|v| valid_dewey? v}.collect do |val| if base == :hundreds c = val[0...1] + '00' elsif base == :tens c = val[0...2] + '0' end translation_map[c] end accumulator.concat vals end end
dewey_text(options={})
click to toggle source
# File lib/blacklight/marc/indexer/dewey.rb, line 22 def dewey_text(options={}) lambda do |record, accumulator, context| vals = [] extractor = Traject::MarcExtractor.new('082a', options) vals = extractor.extract(record).select{|v| valid_dewey? v}.collect do |val| val.gsub(/\/[.]/,'.').gsub('/',' ') end accumulator.concat vals unless vals.empty? end end
valid_dewey?(value)
click to toggle source
# File lib/blacklight/marc/indexer/dewey.rb, line 32 def valid_dewey?(value) value =~ /^\d{1,3}(\.\d+)?.*/ end