Module: SetBuilder::ValueMap

Defined in:
lib/set_builder/value_map.rb

Class Method Summary collapse

Class Method Details

.for(name) ⇒ Object



30
31
32
33
# 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) ⇒ Object



44
45
46
47
48
# 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) ⇒ Object



37
38
39
40
# 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) ⇒ Boolean

Returns:

  • (Boolean)


10
11
12
13
# File 'lib/set_builder/value_map.rb', line 10

def self.registered?(name)
  name = name.to_sym
  @registered_value_maps.key?(name)
end

.to_jsonObject



52
53
54
# File 'lib/set_builder/value_map.rb', line 52

def self.to_json
  @registered_value_maps.to_json
end

.to_s(name, value) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# 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