Class MCollective::Matcher::Scanner
In: lib/mcollective/matcher/scanner.rb
Parent: Object

Methods

get_token   new  

Attributes

arguments  [RW] 
token_index  [RW] 

Public Class methods

[Source]

   # File lib/mcollective/matcher/scanner.rb, line 6
6:             def initialize(arguments)
7:                 @token_index = 0
8:                 @arguments = arguments
9:             end

Public Instance methods

Scans the input string and identifies single language tokens

[Source]

    # File lib/mcollective/matcher/scanner.rb, line 12
12:             def get_token
13:                 if @token_index >= @arguments.size
14:                     return nil
15:                 end
16: 
17:                 begin
18:                     case @arguments.split("")[@token_index]
19:                         when "("
20:                             return "(", "("
21: 
22:                         when ")"
23:                             return ")", ")"
24: 
25:                         when "n"
26:                             if (@arguments.split("")[@token_index + 1] == "o") && (@arguments.split("")[@token_index + 2] == "t") && ((@arguments.split("")[@token_index + 3] == " ") || (@arguments.split("")[@token_index + 3] == "("))
27:                                 @token_index += 2
28:                                 return "not", "not"
29:                             else
30:                                 gen_statement
31:                             end
32: 
33:                         when "!"
34:                             return "not", "not"
35: 
36:                         when "a"
37:                             if (@arguments.split("")[@token_index + 1] == "n") && (@arguments.split("")[@token_index + 2] == "d") && ((@arguments.split("")[@token_index + 3] == " ") || (@arguments.split("")[@token_index + 3] == "("))
38:                                 @token_index += 2
39:                                 return "and", "and"
40:                             else
41:                                 gen_statement
42:                             end
43: 
44:                         when "o"
45:                             if (@arguments.split("")[@token_index + 1] == "r") && ((@arguments.split("")[@token_index + 2] == " ") || (@arguments.split("")[@token_index + 2] == "("))
46:                                 @token_index += 1
47:                                 return "or", "or"
48:                             else
49:                                 gen_statement
50:                             end
51: 
52:                         when " "
53:                             return " ", " "
54: 
55:                         else
56:                             gen_statement
57:                     end
58:                 end
59:             rescue NoMethodError => e
60:                 pp e
61:                 raise "Cannot end statement with 'and', 'or', 'not'"
62:             end

[Validate]