'Parse a router descriptor in a network status document.
:param str content: router descriptor content to be parsed
:param NetworkStatusDocument document: document this descriptor came from
:param bool validate: checks the validity of the content if **True**, skips
these checks otherwise
:raises: **ValueError** if the descriptor data is invalid'

def __init__(self, content, validate=False, document=None):

    super(RouterStatusEntry, self).__init__(content, lazy_load=(not validate))
    self.document = document
    entries = _get_descriptor_components(content, validate)
    if validate:
        for keyword in self._required_fields():
            if (keyword not in entries):
                raise ValueError(("%s    must    have    a    '%s'    line:\n%s" % (self._name(True), keyword, str(self))))
        for keyword in self._single_fields():
            if ((keyword in entries) and (len(entries[keyword]) > 1)):
                raise ValueError(("%s    can    only    have    a    single    '%s'    line,    got    %i:\n%s" % (self._name(True), keyword, len(entries[keyword]), str(self))))
        if ('r' != list(entries.keys())[0]):
            raise ValueError(("%s    are    expected    to    start    with    a    'r'    line:\n%s" % (self._name(True), str(self))))
        self._parse(entries, validate)
    else:
        self._entries = entries
