Module: Hokusai::Automation::Converters::SelectorConverter

Defined in:
ui/src/hokusai/automation/converters/selector_converter.rb

Class Method Summary collapse

Class Method Details

.parse_selectors(selector) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'ui/src/hokusai/automation/converters/selector_converter.rb', line 6

def self.parse_selectors(selector)
  final = []
  scanner = StringScanner.new(selector)

  while !scanner.eos?
    if node = scan_node(scanner)
      id = scan_id(scanner)
      classes = scan_classes(scanner)
      final << Selector.new(node, id, classes)

      scan_space(scanner)
    elsif id = scan_id(scanner)
      classes = scan_classes(scanner)
      final << Selector.new(nil, id, classes)

      scan_space(scanner)
    elsif classes = scan_classes(scanner)
      final << Selector.new(nil, nil, classes)

      scan_space(scanner)
    else
      scanner.terminate

      if scanner.rest.empty?
        scanner.terminate
      else
        raise Automation::Error.new("Error Scanning: Improperly formatted selector: #{scanner.rest}")
      end
    end
  end

  final
end