Module: Dictable

Included in:
Dict
Defined in:
lib/quality_extensions/dictable.rb

Overview

Provides dictionary/hash-like mixin for any enumerable object that yields key-value pairs and responds_to :update (the included Dict builds upon Array).

For example:

require 'dictable'

a = Dict.new

d[:one] = 1
d[:two] = 2

d[:one]    -> 1
d[:ten]    -> nil

d.keys     -> [:one, :two]
d.values   -> [1, 2]
d.to_hash  -> {:two=>2, :one=>1}

Instance Method Summary collapse

Instance Method Details

#[](key) ⇒ Object



24
25
26
27
# File 'lib/quality_extensions/dictable.rb', line 24

def [](key)
  each { |(k, v)| return v if k == key }
  return nil
end

#[]=(key, value) ⇒ Object



28
29
30
# File 'lib/quality_extensions/dictable.rb', line 28

def []=(key, value)
  update key, value
end

#keysObject



31
32
33
# File 'lib/quality_extensions/dictable.rb', line 31

def keys
  inject([]) { |keys, (k, v)| keys << k }
end

#to_hashObject



37
38
39
# File 'lib/quality_extensions/dictable.rb', line 37

def to_hash
  inject({}) { |hash, (k, v)| hash.update({ k => v }) }
end

#valuesObject



34
35
36
# File 'lib/quality_extensions/dictable.rb', line 34

def values
  inject([]) { |values, (k, v)| values << v }
end