This will read multiple tables separated by a #### Header
        and return it as a dictionary of headers
        :param file_path: str of the path to the file
        :param text: str of the mark down text
        :param columns: list of str of columns to use
        :param key_on: list of str of columns to key on
        :param eval_cells: bool if True will try to evaluate numbers
        :return: OrderedDict of {<header>: SeabornTable}

def mark_down_to_dict_of_obj(cls, file_path=None, text='', columns=None,
                                 key_on=None, eval_cells=True):
        """
        This will read multiple tables separated by a #### Header
        and return it as a dictionary of headers
        :param file_path: str of the path to the file
        :param text: str of the mark down text
        :param columns: list of str of columns to use
        :param key_on: list of str of columns to key on
        :param eval_cells: bool if True will try to evaluate numbers
        :return: OrderedDict of {<header>: SeabornTable}
        """
        text = cls._get_lines(file_path, text, split_lines=False)
        ret = OrderedDict()
        paragraphs = text.split('####')
        for paragraph in paragraphs[1:]:
            header, text = paragraph.split('\n', 1)
            ret[header.strip()] = cls.mark_down_to_obj(
                text=text, columns=columns, key_on=key_on,
                eval_cells=eval_cells)
        return ret