class Sass::Tree::RuleNode
def parse_selector(text)
def parse_selector(text) scanner = StringScanner.new(text) rules = [[]] while scanner.rest? rules.last << scanner.scan(/[^",&]*/) case scanner.scan(/./) when '&'; rules.last << :parent when ',' scanner.scan(/\s*/) rules << [] if scanner.rest? when '"' rules.last << '"' << scanner.scan(/([^"\\]|\\.)*/) # We don't want to enforce that strings are closed, # but we do want to consume quotes or trailing backslashes. rules.last << scanner.scan(/./) if scanner.rest? end end rules.map! do |l| Haml::Util.merge_adjacent_strings(l).reject {|r| r.is_a?(String) && r.empty?} end rules end