class Playwright::EventEmitterProxy

Public Class Methods

new(api, impl) click to toggle source

@param src [PlaywrightApi] @param dest [EventEmitter]

# File lib/playwright/event_emitter_proxy.rb, line 7
def initialize(api, impl)
  @api = api
  @impl = impl
  @listeners = {}
end

Public Instance Methods

off(event, callback) click to toggle source
Calls superclass method Playwright::EventEmitter#off
# File lib/playwright/event_emitter_proxy.rb, line 27
def off(event, callback)
  super
  if listener_count(event) == 0
    unsubscribe(event)
  end
end
on(event, callback) click to toggle source
Calls superclass method Playwright::EventEmitter#on
# File lib/playwright/event_emitter_proxy.rb, line 13
def on(event, callback)
  if listener_count(event) == 0
    subscribe(event)
  end
  super
end
once(event, callback) click to toggle source
Calls superclass method Playwright::EventEmitter#once
# File lib/playwright/event_emitter_proxy.rb, line 20
def once(event, callback)
  if listener_count(event) == 0
    subscribe(event)
  end
  super
end

Private Instance Methods

subscribe(event) click to toggle source
# File lib/playwright/event_emitter_proxy.rb, line 34
        def subscribe(event)
  @listeners[event] = ->(*args) {
    wrapped_args = args.map { |arg| ::Playwright::PlaywrightApi.wrap(arg) }
    emit(event, *wrapped_args)
  }
  @impl.on(event, @listeners[event])
end
unsubscribe(event) click to toggle source
# File lib/playwright/event_emitter_proxy.rb, line 42
        def unsubscribe(event)
  listener = @listeners.delete(event)
  if listener
    @impl.off(event, listener)
  end
end