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]