def visit_rule(node)
old_at_root_without_rule = @at_root_without_rule
parser = Sass::SCSS::StaticParser.new(run_interp(node.rule),
node.filename, node.options[:importer], node.line)
if @in_keyframes
keyframe_rule_node = Sass::Tree::KeyframeRuleNode.new(parser.parse_keyframes_selector)
keyframe_rule_node.options = node.options
keyframe_rule_node.line = node.line
keyframe_rule_node.filename = node.filename
keyframe_rule_node.source_range = node.source_range
keyframe_rule_node.has_children = node.has_children
with_environment Sass::Environment.new(@environment, node.options) do
keyframe_rule_node.children = node.children.map {|c| visit(c)}.flatten
end
keyframe_rule_node
else
@at_root_without_rule = false
node.parsed_rules ||= parser.parse_selector
node.resolved_rules = node.parsed_rules.resolve_parent_refs(
@environment.selector, !old_at_root_without_rule)
node.stack_trace = @environment.stack.to_s if node.options[:trace_selectors]
with_environment Sass::Environment.new(@environment, node.options) do
@environment.selector = node.resolved_rules
node.children = node.children.map {|c| visit(c)}.flatten
end
node
end
ensure
@at_root_without_rule = old_at_root_without_rule
end