Module: Mixture::Extensions::Hashable

Extended by:
Forwardable
Includes:
Comparable, Enumerable
Defined in:
lib/mixture/extensions/hashable.rb

Overview

Has the mixture respond to #[] and #[]=.

Instance Method Summary collapse

Instance Method Details

#[](key) ⇒ Object



15
16
17
# File 'lib/mixture/extensions/hashable.rb', line 15

def [](key)
  attribute(key.to_s.intern)
end

#[]=(key, value) ⇒ Object



19
20
21
# File 'lib/mixture/extensions/hashable.rb', line 19

def []=(key, value)
  attribute(key.to_s.intern, value)
end

#fetch(key, default = Unknown) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/mixture/extensions/hashable.rb', line 27

def fetch(key, default = Unknown)
  case
  when key?(key.to_s.intern) then attribute(key.to_s.intern)
  when block_given?          then yield(key.to_s.intern)
  when default != Unknown    then default
  else fail KeyError, "Undefined attribute #{key.to_s.intern}"
  end
end

#key?(key) ⇒ Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/mixture/extensions/hashable.rb', line 23

def key?(key)
  self.class.attributes.key?(key.to_s.intern)
end