class Sass::CSS

def parent_ref_rules(root)

Parameters:
  • 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