Class: Cul::Hydra::Solrizer::ValueMapper
- Inherits:
-
Object
- Object
- Cul::Hydra::Solrizer::ValueMapper
- 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
-
#initialize(value_maps = nil) ⇒ ValueMapper
constructor
Instance methods.
- #map_field(field_key, map_key) ⇒ Object
- #map_value(field_key, value_key) ⇒ Object
- #maps_field?(field_key) ⇒ Boolean
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_maps ⇒ Object
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
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 |