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