class Sass::Tree::Visitors::ToCss
def visit_rule(node)
@comment
def visit_rule(node) with_tabs(@tabs + node.tabs) do rule_separator = node.style == :compressed ? ',' : ', ' line_separator = case node.style when :nested, :expanded; "\n" when :compressed; "" else; " " end rule_indent = ' ' * @tabs per_rule_indent, total_indent = if [:nested, :expanded].include?(node.style) [rule_indent, ''] else ['', rule_indent] end joined_rules = node.resolved_rules.members.map do |seq| next if seq.has_placeholder? rule_part = seq.to_a.join if node.style == :compressed rule_part.gsub!(/([^,])\s*\n\s*/m, '\1 ') rule_part.gsub!(/\s*([,+>])\s*/m, '\1') rule_part.strip! end rule_part end.compact.join(rule_separator) joined_rules.lstrip! joined_rules.gsub!(/\s*\n\s*/, "#{line_separator}#{per_rule_indent}") old_spaces = ' ' * @tabs if node.style != :compressed if node.options[:debug_info] && !@in_directive visit(debug_info_rule(node.debug_info, node.options)) output "\n" elsif node.options[:trace_selectors] output("#{old_spaces}/* ") output(node.stack_trace.gsub("\n", "\n #{old_spaces}")) output(" */\n") elsif node.options[:line_comments] output("#{old_spaces}/* line #{node.line}") if node.filename relative_filename = if node.options[:css_filename] begin Sass::Util.pathname(node.filename).relative_path_from( Sass::Util.pathname(File.dirname(node.options[:css_filename]))).to_s rescue ArgumentError nil end end relative_filename ||= node.filename output(", #{relative_filename}") end output(" */\n") end end end_props, trailer, tabs = '', '', 0 if node.style == :compact separator, end_props, bracket = ' ', ' ', ' { ' trailer = "\n" if node.group_end elsif node.style == :compressed separator, bracket = ';', '{' else tabs = @tabs + 1 separator, bracket = "\n", " {\n" trailer = "\n" if node.group_end end_props = (node.style == :expanded ? "\n" + old_spaces : ' ') end output(total_indent + per_rule_indent) for_node(node, :selector) {output(joined_rules)} output(bracket) with_tabs(tabs) do node.children.each_with_index do |child, i| output(separator) if i > 0 visit(child) end end output(end_props) output("}" + trailer) end end