'Determines language of a code block from shebang line and whether said
line should be removed or left in place. If the sheband line contains a
path (even a single /) then it is assumed to be a real shebang line and
left alone. However, if no path is given (e.i.: #!python or :::python)
then it is assumed to be a mock shebang for language identifitation of
a code fragment and removed from the code block prior to processing for
code highlighting. When a mock shebang (e.i: #!python) is found, line
numbering is turned on. When colons are found in place of a shebang
(e.i.: :::python), line numbering is left in the current state - off
by default.
Also parses optional list of highlight lines, like:
:::python hl_lines="1 3"'

def _parseHeader(self):

    import re
    lines = self.src.split(u'\n')
    fl = lines.pop(0)
    c = re.compile(u'\n                                                (?:(?:^::+)|(?P<shebang>^[#]!))    #    Shebang    or    2    or    more    colons\n                                                (?P<path>(?:/\\w+)*[/    ])?                                #    Zero    or    1    path\n                                                (?P<lang>[\\w+-]*)                                                            #    The    language\n                                                \\s*                                                                                                                    #    Arbitrary    whitespace\n                                                #    Optional    highlight    lines,    single-    or    double-quote-delimited\n                                                (hl_lines=(?P<quot>"|\')(?P<hl_lines>.*?)(?P=quot))?\n                                                ', re.VERBOSE)
    m = c.search(fl)
    if m:
        try:
            self.lang = m.group(u'lang').lower()
        except IndexError:
            self.lang = None
        if m.group(u'path'):
            lines.insert(0, fl)
        if ((self.linenums is None) and m.group(u'shebang')):
            self.linenums = True
        self.hl_lines = parse_hl_lines(m.group(u'hl_lines'))
    else:
        lines.insert(0, fl)
    self.src = u'\n'.join(lines).strip(u'\n')
