'Parse an at-rule.
Subclasses that override this method must use ``super()`` and
pass its return value for at-rules they do not know.
In CSS 2.1, this method handles @charset, @import, @media and @page
rules.
:param rule:
An unparsed :class:`AtRule`.
:param previous_rules:
The list of at-rules and rulesets that have been parsed so far
in this context. This list can be used to decide if the current
rule is valid. (For example, @import rules are only allowed
before anything but a @charset rule.)
:param context:
Either ``\'stylesheet\'`` or an at-keyword such as ``\'@media\'``.
(Most at-rules are only allowed in some contexts.)
:raises:
:class:`~.parsing.ParseError` if the rule is invalid.
:return:
A parsed at-rule'

def parse_at_rule(self, rule, previous_rules, errors, context):

    try:
        parser = self.at_parsers[rule.at_keyword]
    except KeyError:
        raise ParseError(rule, u'unknown    at-rule    in    {0}    context:    {1}'.format(context, rule.at_keyword))
    else:
        return parser(rule, previous_rules, errors, context)
