class Basquiat::Adapters::RabbitMq::Events
Attributes
keys[R]
Public Class Methods
new()
click to toggle source
# File lib/basquiat/adapters/rabbitmq/events.rb, line 9 def initialize @keys = [] @exact = {} @patterns = {} end
Public Instance Methods
[](key)
click to toggle source
# File lib/basquiat/adapters/rabbitmq/events.rb, line 24 def [](key) @exact.fetch(key) { simple_pattern_match(key) } rescue KeyError raise KeyError, "No event handler found for #{key}" end
[]=(key, value)
click to toggle source
# File lib/basquiat/adapters/rabbitmq/events.rb, line 15 def []=(key, value) if key =~ /\*|#/ set_pattern_key(key, value) else @exact[key] = value end @keys.push key end
Private Instance Methods
set_pattern_key(key, value)
click to toggle source
# File lib/basquiat/adapters/rabbitmq/events.rb, line 32 def set_pattern_key(key, value) key = key.gsub('.', '\.') key = if key =~ /\*/ /^#{key.gsub('*', '[^.]+')}$/ else /^#{key.gsub(/#/, '.*')}$/ end @patterns[key] = value end
simple_pattern_match(key)
click to toggle source
# File lib/basquiat/adapters/rabbitmq/events.rb, line 42 def simple_pattern_match(key) match = @patterns.keys.detect(nil) { |pattern| key =~ pattern } @patterns.fetch match end