'Analyze the text `block` and return a table data structure.
Given a plaintext-graphic table in `block` (list of lines of text; no
whitespace padding), parse the table, construct and return the data
necessary to construct a CALS table or equivalent.
Raise `TableMarkupError` if there is any problem with the markup.'

def parse(self, block):

    self.setup(block)
    self.find_head_body_sep()
    self.parse_table()
    structure = self.structure_from_cells()
    return structure
