Module: Blacklight::Marc::Indexer::Dewey

Defined in:
lib/blacklight/marc/indexer/dewey.rb

Instance Method Summary collapse

Instance Method Details

#dewey_facets(options = {}) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 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 = {}) ⇒ Object



22
23
24
25
26
27
28
29
30
31
# 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) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/blacklight/marc/indexer/dewey.rb', line 32

def valid_dewey?(value)
  value =~ /^\d{1,3}(\.\d+)?.*/
end