Module: Blacklight::Marc::Indexer::Dewey
- Defined in:
- lib/blacklight/marc/indexer/dewey.rb
Instance Method Summary collapse
- #dewey_facets(options = {}) ⇒ Object
- #dewey_text(options = {}) ⇒ Object
- #valid_dewey?(value) ⇒ Boolean
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(={}) translation_map = ([:translation_map] || "callnumber_map") unless translation_map.is_a? Traject::TranslationMap translation_map = Traject::TranslationMap.new(translation_map) end base = [:base] || :hundreds lambda do |record, accumulator, context| vals = [] extractor = Traject::MarcExtractor.new('082a', ) 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(={}) lambda do |record, accumulator, context| vals = [] extractor = Traject::MarcExtractor.new('082a', ) 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
32 33 34 |
# File 'lib/blacklight/marc/indexer/dewey.rb', line 32 def valid_dewey?(value) value =~ /^\d{1,3}(\.\d+)?.*/ end |