'Check for a block quote attribution and split it off:
* First line after a blank line must begin with a dash ("--", "---",
em-dash; matches `self.attribution_pattern`).
* Every line after that must have consistent indentation.
* Attributions must be preceded by block quote content.
Return a tuple of: (block quote content lines, content offset,
attribution lines, attribution offset, remaining indented lines).'

def split_attribution(self, indented, line_offset):

    blank = None
    nonblank_seen = False
    for i in range(len(indented)):
        line = indented[i].rstrip()
        if line:
            if (nonblank_seen and (blank == (i - 1))):
                match = self.attribution_pattern.match(line)
                if match:
                    (attribution_end, indent) = self.check_attribution(indented, i)
                    if attribution_end:
                        a_lines = indented[i:attribution_end]
                        a_lines.trim_left(match.end(), end=1)
                        a_lines.trim_left(indent, start=1)
                        return (indented[:i], a_lines, i, indented[attribution_end:], (line_offset + attribution_end))
            nonblank_seen = True
        else:
            blank = i
    else:
        return (indented, None, None, None, None)
