Class: Cul::Hydra::Solrizer::ValueMapper

Inherits:
Object
  • Object
show all
Defined in:
lib/cul_hydra/solrizer/value_mapper.rb

Overview

This class uses a yaml map to translate field values for solr

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value_maps = nil) ⇒ ValueMapper

Instance methods



23
24
25
26
# File 'lib/cul_hydra/solrizer/value_mapper.rb', line 23

def initialize(value_maps=nil)
  @value_maps = (value_maps || Cul::Hydra::Solrizer::ValueMapper.default_value_maps).with_indifferent_access
  @mapped_fields = {}.with_indifferent_access
end

Class Method Details

.default_value_mapsObject



18
19
20
# File 'lib/cul_hydra/solrizer/value_mapper.rb', line 18

def self.default_value_maps
  @@value_maps ||= self.load_value_maps
end

.load_value_maps(config_path = nil) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/cul_hydra/solrizer/value_mapper.rb', line 4

def self.load_value_maps(config_path=nil)
  if config_path.nil?
    if defined?(Rails.root) && !Rails.root.nil?
      config_path = File.join(Rails.root, "config", "solr_value_maps.yml")
    end
    # Default to using the config file within the gem
    if !File.exist?(config_path.to_s)
      config_path = File.join(File.dirname(__FILE__), "..", "..", "..", "config", "solr_value_maps.yml")
    end
  end
  #logger.info("ValueMapper: loading field value maps from #{File.expand_path(config_path)}")
  YAML::load(File.open(config_path))
end

Instance Method Details

#map_field(field_key, map_key) ⇒ Object



32
33
34
# File 'lib/cul_hydra/solrizer/value_mapper.rb', line 32

def map_field(field_key, map_key)
  @mapped_fields[field_key] = map_key
end

#map_value(field_key, value_key) ⇒ Object



36
37
38
39
40
41
42
43
44
# File 'lib/cul_hydra/solrizer/value_mapper.rb', line 36

def map_value(field_key, value_key)
  map_key = @mapped_fields[field_key]
  return value_key unless @mapped_fields.has_key? field_key and @value_maps.has_key? map_key
  if value_key.is_a? Array
    value_key.collect{ |val| @value_maps[map_key].fetch(val, val) }
  else
    @value_maps[map_key].fetch(value_key, value_key)
  end
end

#maps_field?(field_key) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/cul_hydra/solrizer/value_mapper.rb', line 28

def maps_field?(field_key)
  @mapped_fields.has_key? field_key
end