Class: Utilise::Augment::Crash::Bash

Inherits:
Hashie::Mash
  • Object
show all
Defined in:
lib/utilise/augment/crash.rb

Overview

Creates a hashie mash that raises an error when a key is not present

Constant Summary collapse

DEFAULT_PROC =

The default proc to be used for the bash hash

lambda do |hash, key|
  raise NameError, "No key '#{key}' in #{hash.to_hash.inspect}"
end

Instance Method Summary collapse

Constructor Details

#initialize(source_hash = nil, default = nil, &blk) ⇒ Bash

Returns a new instance of Bash.



14
15
16
17
# File 'lib/utilise/augment/crash.rb', line 14

def initialize(source_hash = nil, default = nil, &blk)
  default ? super(source_hash, default) : super(source_hash, &blk)
  recursively_freeze(self)
end

Instance Method Details

#recursively_freeze(obj) ⇒ Object

recursively apply the default proc to all hashes



20
21
22
23
24
25
26
27
28
# File 'lib/utilise/augment/crash.rb', line 20

def recursively_freeze(obj)
  case obj
  when Array
    obj.each { |o| recursively_freeze(o) }
  when Hash
    obj.default_proc = DEFAULT_PROC
    recursively_freeze(obj.values)
  end
end