# File lib/sass/tree/visitors/to_css.rb, line 176
  def visit_directive(node)
    was_in_directive = @in_directive
    tab_str = '  ' * @tabs
    if !node.has_children || node.children.empty?
      output(tab_str)
      for_node(node) {output(node.resolved_value)}
      if node.has_children
        output("#{' ' unless node.style == :compressed}{}")
      elsif node.children.empty?
        output(";")
      end
      return
    end

    @in_directive ||= !node.is_a?(Sass::Tree::MediaNode)
    output(tab_str) if node.style != :compressed
    for_node(node) {output(node.resolved_value)}
    output(node.style == :compressed ? "{" : " {")
    output(node.style == :compact ? ' ' : "\n") if node.style != :compressed

    had_children = true
    first = true
    node.children.each do |child|
      next if child.invisible?
      if node.style == :compact
        if child.is_a?(Sass::Tree::PropNode)
          with_tabs(first || !had_children ? 0 : @tabs + 1) do
            visit(child)
            output(' ')
          end
        else
          unless had_children
            erase! 1
            output "\n"
          end

          if first
            lstrip {with_tabs(@tabs + 1) {visit(child)}}
          else
            with_tabs(@tabs + 1) {visit(child)}
          end

          rstrip!
          output "\n"
        end
        had_children = child.has_children
        first = false
      elsif node.style == :compressed
        unless had_children
          output(";") unless trailing_semicolon?
        end
        with_tabs(0) {visit(child)}
        had_children = child.has_children
      else
        with_tabs(@tabs + 1) {visit(child)}
        output "\n"
      end
    end
    rstrip!
    if node.style == :compressed && trailing_semicolon?
      erase! 1
    end
    if node.style == :expanded
      output("\n#{tab_str}")
    elsif node.style != :compressed
      output(" ")
    end
    output("}")
  ensure
    @in_directive = was_in_directive
  end