Class: Pebblebed::River::Subscription
- Inherits:
-
Object
- Object
- Pebblebed::River::Subscription
- Defined in:
- lib/pebblebed/river/subscription.rb
Instance Attribute Summary collapse
-
#events ⇒ Object
readonly
Returns the value of attribute events.
-
#klasses ⇒ Object
readonly
Returns the value of attribute klasses.
-
#paths ⇒ Object
readonly
Returns the value of attribute paths.
Instance Method Summary collapse
-
#initialize(options = {}) ⇒ Subscription
constructor
A new instance of Subscription.
- #pathify(s) ⇒ Object
- #queries ⇒ Object
- #querify(query) ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Subscription
Returns a new instance of Subscription.
6 7 8 9 10 |
# File 'lib/pebblebed/river/subscription.rb', line 6 def initialize( = {}) @events = querify([:event]).split('|') @paths = querify([:path]).split('|') @klasses = querify([:klass]).split('|') end |
Instance Attribute Details
#events ⇒ Object (readonly)
Returns the value of attribute events.
5 6 7 |
# File 'lib/pebblebed/river/subscription.rb', line 5 def events @events end |
#klasses ⇒ Object (readonly)
Returns the value of attribute klasses.
5 6 7 |
# File 'lib/pebblebed/river/subscription.rb', line 5 def klasses @klasses end |
#paths ⇒ Object (readonly)
Returns the value of attribute paths.
5 6 7 |
# File 'lib/pebblebed/river/subscription.rb', line 5 def paths @paths end |
Instance Method Details
#pathify(s) ⇒ Object
32 33 34 35 36 37 |
# File 'lib/pebblebed/river/subscription.rb', line 32 def pathify(s) required, optional = s.split('^').map {|s| s.split('.')} required = Array(required.join('.')) optional ||= [] (0..optional.length).map {|i| required + optional[0,i]}.map {|p| p.join('.')} end |
#queries ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/pebblebed/river/subscription.rb', line 12 def queries qx = [] # If we add more than one more level, # it's probably time to go recursive. events.each do |event| klasses.each do |klass| paths.each do |pathspec| pathify(pathspec).each do |path| qx << [event, klass, path].join('._.') end end end end qx end |
#querify(query) ⇒ Object
28 29 30 |
# File 'lib/pebblebed/river/subscription.rb', line 28 def querify(query) (query || '#').gsub('**', '#') end |