Module: Lab42::NHash::Fallbacks

Included in:
Lab42::NHash
Defined in:
lib/lab42/nhash/fallbacks.rb

Instance Method Summary collapse

Instance Method Details

#againObject

Raises:



4
5
6
7
# File 'lib/lab42/nhash/fallbacks.rb', line 4

def again
  raise IllegalStateError, "must not call again before a failed get/fetch" unless @inside_fallback
  get( *@fallback_params )
end

#clear_fallbacks!Object



9
10
11
# File 'lib/lab42/nhash/fallbacks.rb', line 9

def clear_fallbacks!
  @fallbacks = []
end

#pop_fallbackObject

Raises:



13
14
15
16
17
18
19
# File 'lib/lab42/nhash/fallbacks.rb', line 13

def pop_fallback
  raise IllegalStateError, "must not tamper with the fallback stack inside fallbacks" if @inside_fallback

  @fallbacks.pop

  self
end

#push_fallback(fb = nil, &blk) ⇒ Object

Raises:

  • (ArgumentError)


21
22
23
24
25
26
27
28
29
# File 'lib/lab42/nhash/fallbacks.rb', line 21

def push_fallback fb=nil, &blk
  raise ArgumentError, "need to provide a lambda or a block" unless fb || blk
  assure_not_inside_fallback
  
  @current_fallback_pointer = @fallbacks.size
  @fallbacks.push( fb || blk )

  self
end

#with_fallback(b = nil, &blk) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/lab42/nhash/fallbacks.rb', line 31

def with_fallback b=nil, &blk
  assure_not_inside_fallback
  save_fallback_pointer = @current_fallback_pointer
  _invoke (b||blk), self
ensure
  @current_fallback_pointer = save_fallback_pointer
end