Module: Wasmify::Patcha

Defined in:
lib/wasmify/patcha.rb

Class Method Summary collapse

Class Method Details

.on_class(event) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/wasmify/patcha.rb', line 10

def on_class(event)
  # Ignore singletons
  return if event.self.singleton_class?

  class_name = name_method.bind_call(event.self)

  return unless callbacks[class_name]

  clbk = callbacks.delete(class_name)
  tracer.disable if callbacks.empty?

  clbk.call
end

.on_load(name, &callback) ⇒ Object



6
7
8
# File 'lib/wasmify/patcha.rb', line 6

def on_load(name, &callback)
  callbacks[name] = callback
end

.setup!Object



24
25
26
27
28
29
30
31
# File 'lib/wasmify/patcha.rb', line 24

def setup!
  return if callbacks.empty?

  @tracer = TracePoint.new(:end, &method(:on_class))
  tracer.enable
  # Use `Module#name` instead of `self.name` to handle overwritten `name` method
  @name_method = Module.instance_method(:name)
end