class Prpr::Handler::Base

Constants

AnyEvent

Attributes

event[R]

Public Class Methods

entries() click to toggle source
# File lib/prpr/handler/base.rb, line 14
def entries
  @@entries ||= []
end
handle(event, queries = {}, &handler) click to toggle source
# File lib/prpr/handler/base.rb, line 10
def handle(event, queries = {}, &handler)
  entries << Entry.new(self, event, queries, handler)
end
new(event) click to toggle source
# File lib/prpr/handler/base.rb, line 43
def initialize(event)
  @event = event
end
on_event(event) click to toggle source
# File lib/prpr/handler/base.rb, line 18
def on_event(event)
  entries
    .select { |entry| match?(entry, event) }
    .each { |entry| invoke(entry, event) }
end

Private Class Methods

invoke(entry, event) click to toggle source
# File lib/prpr/handler/base.rb, line 36
def invoke(entry, event)
  obj = entry.klass.new(event)
  obj.instance_eval(&entry.handler)
end
match?(entry, event) click to toggle source
# File lib/prpr/handler/base.rb, line 26
def match?(entry, event)
  entry.event === event &&
    entry.queries.all? { |query| query_match?(query, event) }
end
query_match?(query, event) click to toggle source
# File lib/prpr/handler/base.rb, line 31
def query_match?(query, event)
  key, value = *query
  value === event.send(key)
end