module SetBuilder::ValueMap

Public Class Methods

for(name) click to toggle source
# File lib/set_builder/value_map.rb, line 30
def self.for(name)
  name = name.to_sym
  @registered_value_maps[name] || raise(ArgumentError, "A value map has not been registered for #{value}")
end
register(name, map) click to toggle source
# File lib/set_builder/value_map.rb, line 44
def self.register(name, map)
  raise "map is expected to be an array of pairs" unless map.is_a?(Array)
  name = name.to_sym
  @registered_value_maps[name] = map
end
register_collection(name, collection, name_method = :name, id_method = :id) click to toggle source
# File lib/set_builder/value_map.rb, line 37
def self.register_collection(name, collection, name_method = :name, id_method = :id)
  map = collection.map {|i| [i.send(id_method).to_s, i.send(name_method)]}
  register(name, map)
end
registered?(name) click to toggle source
# File lib/set_builder/value_map.rb, line 10
def self.registered?(name)
  name = name.to_sym
  @registered_value_maps.key?(name)
end
to_json() click to toggle source
# File lib/set_builder/value_map.rb, line 52
def self.to_json
  @registered_value_maps.to_json
end
to_s(name, value) click to toggle source
# File lib/set_builder/value_map.rb, line 17
def self.to_s(name, value)
  name = name.to_sym
  map = @registered_value_maps[name]
  if map
    pair = map.find {|pair| pair[0] == value}
    pair ? pair[1].to_s : "(unknown)"
  else
    value.to_s
  end
end