From b5a83b1cb96d410e325ff8b733d550295376d8c7 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 4 Jun 2016 15:57:22 +0100 Subject: Write rowspan attribute to HTML --- .../mammoth/internal/conversion/DocumentToHtml.java | 10 +++++++--- .../zwobble/mammoth/internal/documents/TableCell.java | 4 ++++ .../mammoth/tests/conversion/DocumentToHtmlTests.java | 16 ++++++++++++++++ .../mammoth/tests/documents/DocumentElementMakers.java | 3 ++- 4 files changed, 29 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java b/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java index b8df5f2..75a1b1d 100644 --- a/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java +++ b/src/main/java/org/zwobble/mammoth/internal/conversion/DocumentToHtml.java @@ -163,9 +163,13 @@ public class DocumentToHtml { @Override public List visit(TableCell tableCell) { - Map attributes = tableCell.getColspan() == 1 - ? map() - : map("colspan", Integer.toString(tableCell.getColspan())); + Map attributes = new HashMap<>(); + if (tableCell.getColspan() != 1) { + attributes.put("colspan", Integer.toString(tableCell.getColspan())); + } + if (tableCell.getRowspan() != 1) { + attributes.put("rowspan", Integer.toString(tableCell.getRowspan())); + } return list(Html.element("td", attributes, Lists.cons(Html.FORCE_WRITE, convertChildrenToHtml(tableCell)))); } diff --git a/src/main/java/org/zwobble/mammoth/internal/documents/TableCell.java b/src/main/java/org/zwobble/mammoth/internal/documents/TableCell.java index b108de8..0874109 100644 --- a/src/main/java/org/zwobble/mammoth/internal/documents/TableCell.java +++ b/src/main/java/org/zwobble/mammoth/internal/documents/TableCell.java @@ -17,6 +17,10 @@ public class TableCell implements DocumentElement, HasChildren { return colspan; } + public int getRowspan() { + return rowspan; + } + @Override public List getChildren() { return children; diff --git a/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java b/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java index 1555a86..6c1ccbe 100644 --- a/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java +++ b/src/test/java/org/zwobble/mammoth/tests/conversion/DocumentToHtmlTests.java @@ -242,6 +242,22 @@ public class DocumentToHtmlTests { ); } + @Test + public void tableCellsAreWrittenWithRowspanIfNotEqualToOne() { + assertThat( + convertToHtml(new Table(list( + new TableRow(list( + make(a(TABLE_CELL, with(ROWSPAN, 2))) + )) + ))), + deepEquals(list(Html.element("table", list( + Html.element("tr", list( + Html.element("td", map("rowspan", "2"), list(Html.FORCE_WRITE)) + )) + )))) + ); + } + @Test public void hyperlinkWithHrefIsConvertedToAnchorTag() { assertThat( diff --git a/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java b/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java index 17cd18e..0fefd26 100644 --- a/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java +++ b/src/test/java/org/zwobble/mammoth/tests/documents/DocumentElementMakers.java @@ -24,6 +24,7 @@ DocumentElementMakers { public static final Property VERTICAL_ALIGNMENT = newProperty(); public static final Property> CHILDREN = newProperty(); public static final Property COLSPAN = newProperty(); + public static final Property ROWSPAN = newProperty(); public static final Instantiator PARAGRAPH = propertyLookup -> new Paragraph( @@ -43,7 +44,7 @@ DocumentElementMakers { public static final Instantiator TABLE_CELL = propertyLookup -> new TableCell( - 1, + propertyLookup.valueOf(ROWSPAN, 1), propertyLookup.valueOf(COLSPAN, 1), propertyLookup.valueOf(CHILDREN, list())); -- cgit v1.2.3