class AsciiTableFormatter extends AbstractTableFormatter {

    @Override
    public TableFormatter writeCell(String value, int colspan) {
        if (colspan > columns[column].getColspan() - cellIndex) {
            throw new IllegalArgumentException("You have exceded the authorized colspan");
        }

        HorizontalAlignment horizontalAlignment = (colspan == 1) ? columns[column].getHorizontalAlignment() : HorizontalAlignment.CENTER;
        table.addCell(value, convertCellStyle(horizontalAlignment), colspan);

        rowCellIndex = (rowCellIndex + 1) % cellsCount;
        cellIndex = (cellIndex + colspan) % columns[column].getColspan();
        if (cellIndex == 0) {
            column = (column + 1) % columns.length;
        }
        return this;
    }

    public  AsciiTableFormatter(Writer writer, String title, TableFormatterConfig config, Column... columns);
    public  AsciiTableFormatter(String title, Column... columns);
    public  AsciiTableFormatter(Writer writer, String title, Column... columns);

}