Method: Hyperstack::Internal::State::Mapper.observing

Defined in:
lib/hyperstack/internal/state/mapper.rb

.observing(observer, immediate_update, rendering, update_objects) ⇒ Object

Once the observer’s block completes execution, the context instance variables are restored.



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/hyperstack/internal/state/mapper.rb', line 45

def observing(observer, immediate_update, rendering, update_objects)
  saved_context = [@current_observer, @immediate_update]
  @current_observer = observer
  @immediate_update = immediate_update && observer
  if rendering
    @rendering_level += 1
    observed!(observer)
    observed!(observer.class)
  end
  return_value = yield
  update_objects_to_observe(observer) if update_objects
  return_value
ensure
  @current_observer, @immediate_update = saved_context
  @rendering_level -= 1 if rendering
  return_value
end