class Sass::CSS
def parent_ref_rules(root)
-
root
(Tree::Node
) -- The parent node
def parent_ref_rules(root) current_rule = nil root.children.select { |c| Tree::RuleNode === c }.each do |child| root.children.delete child first, rest = child.rules.first.scan(/^(&?(?: .|[^ ])[^.#: \[]*)([.#: \[].*)?$/).first if current_rule.nil? || current_rule.rules.first != first current_rule = Tree::RuleNode.new(first) root << current_rule end if rest child.rules = ["&" + rest] current_rule << child else current_rule.children += child.children end end root.children.each { |v| parent_ref_rules(v) } end