static private Collection<List<String>> splitRow( List<String> row ) {

        List<List<String>> columns = Lists.newArrayListWithExpectedSize( row.size() );

        int nRows = 0;
        for( String cell : row ) {
            List<String> lines = FluentIterable.from( Splitter.onPattern( "\\r?\\n" ).split( cell ) ).toList();
            if( lines.size() > nRows ) {
                nRows = lines.size();
            }
            columns.add( lines );
        }

        List<List<String>> rows = Lists.newArrayListWithCapacity( nRows );

        for( int iRow = 0; iRow < nRows; iRow++ ) {
            List<String> newRow = Lists.newArrayListWithExpectedSize( row.size() );
            for( int iCol = 0; iCol < columns.size(); iCol++ ) {
                List<String> column = columns.get( iCol );
                String cell = "";
                if( iRow < column.size() ) {
                    cell = column.get( iRow );
                }
                newRow.add( cell );
            }
            rows.add( newRow );
        }

        return rows;
    }
Handles newlines by removing them and add new rows instead
jgiven-core/src/main/java/com/tngtech/jgiven/report/text/PlainTextTableWriter.java