Module: Ibex::Runtime::Observation
- Included in:
- Parser
- Defined in:
- lib/json5/generated_parser.rb
Overview
Registration and ordered synchronous dispatch for parser observers.
Defined Under Namespace
Classes: Subscription
Instance Method Summary collapse
Instance Method Details
#observe(&observer) ⇒ Object
4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 |
# File 'lib/json5/generated_parser.rb', line 4416 def observe(&observer) __send__(:ensure_runtime_initialized!) raise ArgumentError, "observe requires a block" unless observer @runtime_observation_mutex.synchronize do ensure_observation_thread! @runtime_fast_path = false subscription = Subscription.__send__(:new) @runtime_observers ||= {} #: Hash[Subscription, Proc] @runtime_observers[subscription] = observer subscription end end |
#unobserve(subscription) ⇒ Object
4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 |
# File 'lib/json5/generated_parser.rb', line 4431 def unobserve(subscription) __send__(:ensure_runtime_initialized!) @runtime_observation_mutex.synchronize do ensure_observation_thread! observers = @runtime_observers next false unless observers removed = !observers.delete(subscription).nil? @runtime_observers = nil if observers.empty? removed end end |