Class: Levels::Audit::RootObserver
- Inherits:
-
Object
- Object
- Levels::Audit::RootObserver
- Defined in:
- lib/levels/audit/root_observer.rb
Overview
The RootObserver observes all accesses to group and value data.
Instance Method Summary collapse
-
#current_value ⇒ Object
Private: Get the current value.
-
#initialize(evaluator) ⇒ RootObserver
constructor
Initialize a new RootObserver.
-
#observe_group(user_observer) ⇒ Object
Get an observer to watch when values are accessed from a group.
-
#with_current_value(value) ⇒ Object
Private: Set the current value context.
Constructor Details
#initialize(evaluator) ⇒ RootObserver
Initialize a new RootObserver
evaluator - Ducktype #call used to interpret raw values.
10 11 12 13 |
# File 'lib/levels/audit/root_observer.rb', line 10 def initialize(evaluator) @evaluator = evaluator @current_value_stack = [] end |
Instance Method Details
#current_value ⇒ Object
Private: Get the current value.
Returns a Levels::Audit::Value or nil.
50 51 52 |
# File 'lib/levels/audit/root_observer.rb', line 50 def current_value @current_value_stack.last end |
#observe_group(user_observer) ⇒ Object
Get an observer to watch when values are accessed from a group.
event_handler - Levels::EventHandler to receive observations.
Returns a Levels::Audit::GroupObserver.
20 21 22 23 24 25 26 27 28 |
# File 'lib/levels/audit/root_observer.rb', line 20 def observe_group(user_observer) if current_value observer = NestedGroupObserver.new(value_observer) current_value.add_nested_group_observer(observer) observer else GroupObserver.new(value_observer, user_observer) end end |
#with_current_value(value) ⇒ Object
Private: Set the current value context. This is used to capture recursive values.
value - Levels::Audit::Value.
Yields.
Returns nothing.
38 39 40 41 42 43 44 45 |
# File 'lib/levels/audit/root_observer.rb', line 38 def with_current_value(value) begin @current_value_stack << value yield ensure @current_value_stack.pop end end |