class Ensconce::HashBuilder
Used to convert pairs of arrays into a hash.
hash_builder = HashBuilder.new :keys => ['a', 'b'], :values => ['1', '2'] hash_builder.hash --> {'a' => '1', 'b' => '2'}
Also allows modification of keys or values
hash_builder.keys_mod = lambda {|key| key.upcase} hash_builder.hash --> {'A' => '1', 'B' => '2'} hash_builder.values_mod = lambda {|value| (value.to_i * 4).to_s} hash_builder.hash --> {'A' => '4', 'B' => '8'}
You can use a Proc to define a mod, but I’d recommend not doing so as a return statement in the Proc can cause an unexpected result (see tests).
Attributes
keys[RW]
keys_mod[RW]
values[RW]
values_mod[RW]
Public Class Methods
new(args = {})
click to toggle source
# File lib/ensconce/hash_builder.rb, line 23 def initialize(args = {}) @keys = args[:keys] @values = args[:values] @keys_mod = args[:keys_mod] @values_mod = args[:values_mod] end
Public Instance Methods
check_mods_are_valid()
click to toggle source
# File lib/ensconce/hash_builder.rb, line 41 def check_mods_are_valid mod_attributes.each do |mod| mod = send mod next unless mod raise ":#{mod} must be a Proc or lambda" unless mod.kind_of? Proc end end
check_required_attributes_present()
click to toggle source
# File lib/ensconce/hash_builder.rb, line 49 def check_required_attributes_present required_attibutes.each do |attribute| raise ":#{attribute} is a required attribute but was not found" unless send(attribute) end end
hash()
click to toggle source
# File lib/ensconce/hash_builder.rb, line 35 def hash valid? map = [processed_keys, processed_values].transpose Hash[map] end
mod_attributes()
click to toggle source
# File lib/ensconce/hash_builder.rb, line 59 def mod_attributes [:keys_mod, :values_mod] end
processed_keys()
click to toggle source
# File lib/ensconce/hash_builder.rb, line 63 def processed_keys keys_mod ? keys.collect(&keys_mod) : keys end
processed_values()
click to toggle source
# File lib/ensconce/hash_builder.rb, line 67 def processed_values values_mod ? values.collect(&values_mod) : values end
required_attibutes()
click to toggle source
# File lib/ensconce/hash_builder.rb, line 55 def required_attibutes [:keys, :values] end
valid?()
click to toggle source
# File lib/ensconce/hash_builder.rb, line 30 def valid? check_required_attributes_present check_mods_are_valid end