class Crass::Parser

def parse_declaration(input = @tokens)

5.3.5. http://dev.w3.org/csswg/css-syntax/#parse-a-declaration

Parses a single declaration and returns it.
def parse_declaration(input = @tokens)
  input = TokenScanner.new(input) unless input.is_a?(TokenScanner)
  while input.peek && input.peek[:node] == :whitespace
    input.consume
  end
  if input.peek.nil?
    # Syntax error.
    return create_node(:error, :value => 'empty')
  elsif input.peek[:node] != :ident
    # Syntax error.
    return create_node(:error, :value => 'invalid')
  end
  if decl = consume_declaration(input)
    return decl
  end
  # Syntax error.
  create_node(:error, :value => 'invalid')
end