Class: RSMP::CommandMatcher
- Inherits:
-
Matcher
- Object
- Matcher
- RSMP::CommandMatcher
show all
- Defined in:
- lib/rsmp/collect/command_matcher.rb
Overview
Class for matching a command
Instance Attribute Summary
Attributes inherited from Matcher
#got, #message, #want
Instance Method Summary
collapse
Methods inherited from Matcher
#done?, #forget, #initialize, #keep, #perform_match
Constructor Details
This class inherits a constructor from RSMP::Matcher
Instance Method Details
#match(item) ⇒ Object
32
33
34
35
36
37
|
# File 'lib/rsmp/collect/command_matcher.rb', line 32
def match(item)
code_match = match_code(item)
return code_match if code_match.nil?
match_value?(item)
end
|
#match_code(item) ⇒ Object
4
5
6
7
8
9
|
# File 'lib/rsmp/collect/command_matcher.rb', line 4
def match_code(item)
return nil if @want['cCI'] && @want['cCI'] != item['cCI']
return nil if @want['n'] && @want['n'] != item['n']
true
end
|
#match_value?(item) ⇒ Boolean
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# File 'lib/rsmp/collect/command_matcher.rb', line 11
def match_value?(item)
return true unless @want.key?('v')
return true if %w[undefined unknown].include?(item['age'])
want = @want['v']
got = item['v']
if want.is_a? Regexp
return false unless regex_match?(got, want)
elsif got != want
return false
end
true
end
|
#regex_match?(got, want) ⇒ Boolean
25
26
27
28
29
30
|
# File 'lib/rsmp/collect/command_matcher.rb', line 25
def regex_match?(got, want)
return got =~ want if got.is_a?(String)
return got.any? { |item| item.is_a?(String) && item =~ want } if got.is_a?(Array)
false
end
|