class ShortBus::Spec
Used for message_specs and publisher_specs
Attributes
specs[R]
Public Class Methods
new(spec = nil)
click to toggle source
# File lib/short_bus/spec.rb, line 10 def initialize(spec = nil) @specs = process(spec) end
Public Instance Methods
<<(spec)
click to toggle source
# File lib/short_bus/spec.rb, line 14 def <<(spec) @specs += process(spec) end
delete(spec)
click to toggle source
# File lib/short_bus/spec.rb, line 18 def delete(spec) @specs.delete spec end
match(item)
click to toggle source
# File lib/short_bus/spec.rb, line 22 def match(item) @specs.reduce(false) { |a, e| a || match_single(e, item) } end
Private Instance Methods
match_single(spec, item)
click to toggle source
# File lib/short_bus/spec.rb, line 28 def match_single(spec, item) if spec.is_a? String spec == item elsif spec.is_a? Regexp spec.match item end end
process(spec, to_set = true)
click to toggle source
# File lib/short_bus/spec.rb, line 36 def process(spec, to_set = true) if spec.is_a? Array process spec.flatten.to_set elsif spec.is_a? Regexp to_set ? [spec].to_set : spec elsif spec.is_a? Set spec.flatten .map { |spec| process(spec, false) } .to_set elsif spec.is_a? String to_set ? [string_to_regexp(spec)].to_set : string_to_regexp(spec) elsif spec.is_a? NilClass [/.*/].to_set end end
string_to_regexp(spec)
click to toggle source
# File lib/short_bus/spec.rb, line 52 def string_to_regexp(spec) if spec.include? '*' /^#{spec.gsub(/\*+/, '*' => '[^/]*', '**' => '.*')}/ else spec end end