Class: Prawn::SVG::CSS::SelectorParser

Inherits:
Object
  • Object
show all
Defined in:
lib/prawn/svg/css/selector_parser.rb

Defined Under Namespace

Classes: Attribute, Combinator, Identifier, Modifier

Class Method Summary collapse

Class Method Details

.parse(selector) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/prawn/svg/css/selector_parser.rb', line 3

def self.parse(selector)
  tokens = tokenise_css_selector(selector) or return

  result = [{}]
  part = nil

  tokens.each do |token|
    case token
    when Modifier
      part = token.type
      result.last[part] ||= part == :name ? +"" : []
    when Identifier
      return unless part
      result.last[part] << token.name
    when Attribute
      return unless ["=", "*=", "~=", "^=", "|=", "$=", nil].include?(token.operator)
      (result.last[:attribute] ||= []) << [token.key, token.operator, token.value]
    when Combinator
      result << {combinator: token.type}
      part = nil
    end
  end

  result
end