class SimpleEnum::Persistence::Hasher
Attributes
enum_key[R]
enum_klass[R]
enum_mapping[R]
enum_value[R]
Public Class Methods
new(options)
click to toggle source
# File lib/simple_enum/persistence/hasher.rb, line 8 def initialize options @enum_klass = options[0] options = options[1] || Hash.new @enum_key = options[:key] || :name @enum_value = options[:value] || :id unless enum_klass.method_defined? :update_enum_hashers enum_klass.instance_eval do def enum_hashers @enum_hashers ||= [] end def update_enum_hashers records = all.to_a enum_hashers.each do |hasher| hasher.enum_replace records end end end enum_klass.class_eval do def update_enum_hashers self.class.update_enum_hashers end after_commit :update_enum_hashers end end enum_klass.enum_hashers.push self enum_replace enum_klass.all end
Also aliased as: call
Public Instance Methods
each_pair(&block)
click to toggle source
# File lib/simple_enum/persistence/hasher.rb, line 50 def each_pair &block @enum_mapping.each &block end
Also aliased as: each
enum_hashers()
click to toggle source
# File lib/simple_enum/persistence/hasher.rb, line 16 def enum_hashers @enum_hashers ||= [] end
enum_replace(records)
click to toggle source
# File lib/simple_enum/persistence/hasher.rb, line 41 def enum_replace records @enum_mapping = Array.new records.each do |record| key = record.send(enum_key) value = record.send(enum_value) @enum_mapping.push([key, value]) end end
freeze()
click to toggle source
Do nothing when freeze, cause we have to motify the hash later
# File lib/simple_enum/persistence/hasher.rb, line 87 def freeze self end
key(value)
click to toggle source
# File lib/simple_enum/persistence/hasher.rb, line 63 def key value matched = @enum_mapping.find { |k, v| v == value } matched[0] if matched end
key?(key)
click to toggle source
# File lib/simple_enum/persistence/hasher.rb, line 55 def key? key @enum_mapping.any? { |k, v| k == key } end
keys()
click to toggle source
# File lib/simple_enum/persistence/hasher.rb, line 74 def keys @enum_mapping.map { |k, v| k } end
update_enum_hashers()
click to toggle source
# File lib/simple_enum/persistence/hasher.rb, line 20 def update_enum_hashers records = all.to_a enum_hashers.each do |hasher| hasher.enum_replace records end end
value(key)
click to toggle source
# File lib/simple_enum/persistence/hasher.rb, line 68 def value key matched = @enum_mapping.find { |k, v| k == key } matched[1] if matched end
Also aliased as: []
value?(value)
click to toggle source
# File lib/simple_enum/persistence/hasher.rb, line 59 def value? value @enum_mapping.any? { |k, v| v == value } end
values()
click to toggle source
# File lib/simple_enum/persistence/hasher.rb, line 78 def values @enum_mapping.map { |k, v| v } end
values_at(*keys)
click to toggle source
# File lib/simple_enum/persistence/hasher.rb, line 82 def values_at *keys @enum_mapping.select { |k, v| keys.include? k }.map { |k, v| v } end