class Sass::Engine

def parse_line(parent, line, root)

def parse_line(parent, line, root)
  case line.text[0]
  when PROPERTY_CHAR
    if line.text[1] == PROPERTY_CHAR ||
        (@options[:property_syntax] == :new &&
         line.text =~ PROPERTY_OLD && $3.empty?)
      # Support CSS3-style pseudo-elements,
      # which begin with ::,
      # as well as pseudo-classes
      # if we're using the new property syntax
      Tree::RuleNode.new(parse_interp(line.text))
    else
      name, eq, value = line.text.scan(PROPERTY_OLD)[0]
      raise SyntaxError.new("Invalid property: \"#{line.text}\".",
        :line => @line) if name.nil? || value.nil?
      parse_property(name, parse_interp(name), eq, value, :old, line)
    end
  when ?!, ?$
    parse_variable(line)
  when COMMENT_CHAR
    parse_comment(line.text)
  when DIRECTIVE_CHAR
    parse_directive(parent, line, root)
  when ESCAPE_CHAR
    Tree::RuleNode.new(parse_interp(line.text[1..-1]))
  when MIXIN_DEFINITION_CHAR
    parse_mixin_definition(line)
  when MIXIN_INCLUDE_CHAR
    if line.text[1].nil? || line.text[1] == ?\s
      Tree::RuleNode.new(parse_interp(line.text))
    else
      parse_mixin_include(line, root)
    end
  else
    parse_property_or_rule(line)
  end
end