From 6f210594bf2e639afe513bde26ee79303391c71f Mon Sep 17 00:00:00 2001 From: Yvan Lussaud Date: Fri, 30 Aug 2024 10:08:44 +0200 Subject: [PATCH] Added height to MRow. --- .../m2doc/html/services/M2DocCSSParser.java | 40 +++++++++++-- .../m2doc/html/services/M2DocHTMLParser.java | 18 ++++-- .../m2doc/html/services/Parser.java | 27 +++++++++ .../org/obeonetwork/m2doc/element/MTable.java | 56 +++++++++++++++++- .../m2doc/element/impl/MTableImpl.java | 31 ++++++++++ .../m2doc/generator/M2DocEvaluator.java | 40 ++++++++++++- .../resources/css/tableRowHeight/doc.html | 30 ++++++++++ .../tableRowHeight-expected-ast.txt | 11 ++++ ...RowHeight-expected-generation-messages.txt | 0 .../tableRowHeight-expected-generation.docx | Bin 0 -> 12390 bytes .../tableRowHeight-expected-validation.docx | 0 .../tableRowHeight-template.docx | Bin 0 -> 12294 bytes .../css/tableRowHeight/tableRowHeight.genconf | 2 + .../css/tableRowHeightRelative/doc.html | 30 ++++++++++ .../tableRowHeightRelative-expected-ast.txt | 11 ++++ ...tRelative-expected-generation-messages.txt | 0 ...RowHeightRelative-expected-generation.docx | Bin 0 -> 12368 bytes ...RowHeightRelative-expected-validation.docx | 0 .../tableRowHeightRelative-template.docx | Bin 0 -> 12294 bytes .../tableRowHeightRelative.genconf | 2 + .../resources/html/tableRowHeight/doc.html | 30 ++++++++++ .../tableRowHeight-expected-ast.txt | 11 ++++ ...RowHeight-expected-generation-messages.txt | 0 .../tableRowHeight-expected-generation.docx | Bin 0 -> 12390 bytes .../tableRowHeight-expected-validation.docx | 0 .../tableRowHeight-template.docx | Bin 0 -> 12294 bytes .../tableRowHeight/tableRowHeight.genconf | 2 + .../html/tableRowHeightRelative/doc.html | 30 ++++++++++ .../tableRowHeightRelative-expected-ast.txt | 11 ++++ ...tRelative-expected-generation-messages.txt | 0 ...RowHeightRelative-expected-generation.docx | Bin 0 -> 12368 bytes ...RowHeightRelative-expected-validation.docx | 0 .../tableRowHeightRelative-template.docx | Bin 0 -> 12294 bytes .../tableRowHeightRelative.genconf | 2 + 34 files changed, 368 insertions(+), 16 deletions(-) create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/doc.html create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/tableRowHeight-expected-ast.txt create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/tableRowHeight-expected-generation-messages.txt create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/tableRowHeight-expected-generation.docx create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/tableRowHeight-expected-validation.docx create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/tableRowHeight-template.docx create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/tableRowHeight.genconf create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeightRelative/doc.html create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeightRelative/tableRowHeightRelative-expected-ast.txt create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeightRelative/tableRowHeightRelative-expected-generation-messages.txt create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeightRelative/tableRowHeightRelative-expected-generation.docx create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeightRelative/tableRowHeightRelative-expected-validation.docx create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeightRelative/tableRowHeightRelative-template.docx create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeightRelative/tableRowHeightRelative.genconf create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/doc.html create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/tableRowHeight-expected-ast.txt create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/tableRowHeight-expected-generation-messages.txt create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/tableRowHeight-expected-generation.docx create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/tableRowHeight-expected-validation.docx create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/tableRowHeight-template.docx create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/tableRowHeight.genconf create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeightRelative/doc.html create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeightRelative/tableRowHeightRelative-expected-ast.txt create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeightRelative/tableRowHeightRelative-expected-generation-messages.txt create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeightRelative/tableRowHeightRelative-expected-generation.docx create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeightRelative/tableRowHeightRelative-expected-validation.docx create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeightRelative/tableRowHeightRelative-template.docx create mode 100644 tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeightRelative/tableRowHeightRelative.genconf diff --git a/plugins/org.obeonetwork.m2doc.html/src/org/obeonetwork/m2doc/html/services/M2DocCSSParser.java b/plugins/org.obeonetwork.m2doc.html/src/org/obeonetwork/m2doc/html/services/M2DocCSSParser.java index 12f57fbd2..e3d8f6094 100644 --- a/plugins/org.obeonetwork.m2doc.html/src/org/obeonetwork/m2doc/html/services/M2DocCSSParser.java +++ b/plugins/org.obeonetwork.m2doc.html/src/org/obeonetwork/m2doc/html/services/M2DocCSSParser.java @@ -31,6 +31,7 @@ import org.obeonetwork.m2doc.element.MParagraph; import org.obeonetwork.m2doc.element.MStyle; import org.obeonetwork.m2doc.element.MTable.MCell; +import org.obeonetwork.m2doc.element.MTable.MRow; import org.obeonetwork.m2doc.element.impl.MBorderImpl; import org.obeonetwork.m2doc.html.services.M2DocHTMLParser.Context; @@ -181,6 +182,11 @@ public class M2DocCSSParser extends Parser { */ private static final String CSS_WIDTH = WIDTH; + /** + * The width property. + */ + private static final String CSS_HEIGHT = HEIGHT; + /** * The CSS dot class separator. */ @@ -256,6 +262,11 @@ public class M2DocCSSParser extends Parser { */ private static final int CSS_FONT_WEIGHT_BOLD_THRESHOLD = 700; + /** + * Regular expression spaces match. + */ + private static final String REG_EXP_SPACES = "\\s+"; + /** * The style attribute. */ @@ -274,7 +285,7 @@ public Map>> parseClasses(String cssClasses) { final Matcher matcher = CSS_CLASS_PATTERN.matcher(cssClasses); while (matcher.find()) { final String classNames = matcher.group(CSS_CLASS_PATTERN_NAME_GROUP); - for (String className : classNames.split("\\s+")) { + for (String className : classNames.split(REG_EXP_SPACES)) { final Map> styles = parseStyles(matcher.group(CSS_CLASS_PATTERN_CSS_STYLES_GROUP)); res.computeIfAbsent(className, n -> new LinkedHashMap>()).putAll(styles); } @@ -310,7 +321,7 @@ public List getCSSClassNames(Node node) { res.add(node.nodeName()); if (node.hasAttr(CLASS_ATTR)) { - for (String className : node.attr(CLASS_ATTR).split("\\s+")) { + for (String className : node.attr(CLASS_ATTR).split(REG_EXP_SPACES)) { res.add(CSS_CLASS_DOT + className); res.add(VALUE_SEPARATOR + className); res.add(node.nodeName() + CSS_CLASS_DOT + className); @@ -543,6 +554,23 @@ public void setStyle(Map> cssProperties, MCell mCell) { setContainerStyle(cssProperties, mCell); } + /** + * Sets the CSS styles to the given {@link MRow}. + * + * @param cssProperties + * the CSS properties + * @param mRow + * the {@link MRow} + */ + public void setStyle(Map> cssProperties, MRow mRow) { + final List cssHeights = cssProperties.get(CSS_HEIGHT); + if (cssHeights != null) { + for (String cssHeight : cssHeights) { + setRowHeight(mRow, cssHeight); + } + } + } + /** * Sets the CSS styles to the given {@link MElementContainer}. * @@ -637,7 +665,7 @@ private void setBorderStyles(Context context, MParagraph paragraph) { final List cssBorderStyles = context.getCssProperties().get(CSS_BORDER_STYLE); if (cssBorderStyles != null) { for (String cssBorderStyle : cssBorderStyles) { - final String[] borderStyles = cssBorderStyle.split("\\s+"); + final String[] borderStyles = cssBorderStyle.split(REG_EXP_SPACES); if (borderStyles.length == 1) { final Type type = getBorderType(borderStyles[0]); final MBorder leftBorder = new MBorderImpl(); @@ -686,7 +714,7 @@ private void setBorders(Context context, MParagraph paragraph) { final List cssBorders = context.getCssProperties().get(CSS_BORDER); if (cssBorders != null) { for (String cssBorder : cssBorders) { - final String[] borders = cssBorder.split("\\s+"); + final String[] borders = cssBorder.split(REG_EXP_SPACES); if (borders.length == 1) { final Type type = getBorderType(borders[0]); final MBorder leftBorder = new MBorderImpl(); @@ -795,7 +823,7 @@ private void setMarginAll(Context context, MParagraph paragraph) { final List cssMargins = context.getCssProperties().get(CSS_MARGIN); if (cssMargins != null) { for (String cssMargin : cssMargins) { - final String[] margins = cssMargin.split("\\s+"); + final String[] margins = cssMargin.split(REG_EXP_SPACES); final int marginLeft; final int marginRight; final int marginTop; @@ -889,7 +917,7 @@ private void setPaddingAll(Context context, MParagraph paragraph) { final List cssPaddings = context.getCssProperties().get(CSS_PADDING); if (cssPaddings != null) { for (String cssPadding : cssPaddings) { - final String[] paddings = cssPadding.split("\\s+"); + final String[] paddings = cssPadding.split(REG_EXP_SPACES); final int paddingLeft; final int paddingRight; final int paddingTop; diff --git a/plugins/org.obeonetwork.m2doc.html/src/org/obeonetwork/m2doc/html/services/M2DocHTMLParser.java b/plugins/org.obeonetwork.m2doc.html/src/org/obeonetwork/m2doc/html/services/M2DocHTMLParser.java index b0ed26ee9..a09f27f56 100644 --- a/plugins/org.obeonetwork.m2doc.html/src/org/obeonetwork/m2doc/html/services/M2DocHTMLParser.java +++ b/plugins/org.obeonetwork.m2doc.html/src/org/obeonetwork/m2doc/html/services/M2DocHTMLParser.java @@ -144,7 +144,7 @@ public class M2DocHTMLParser extends Parser { /** * The height attribute. */ - private static final String HEIGHT_ATTR = "height"; + private static final String HEIGHT_ATTR = HEIGHT; /** * The width attribute. @@ -965,22 +965,28 @@ private void insertTable(MParagraph parent, Context context, Node header, Node b if ("tr".equals(child.nodeName())) { final MRow row = new MRowImpl(); table.getRows().add(row); + if (child.hasAttr(HEIGHT_ATTR)) { + setRowHeight(row, child.attr(HEIGHT_ATTR)); + } + final Context localRowContext = context.copy(); + applyGlobalAttibutes(localRowContext, child); + CSS_PARSER.setStyle(localRowContext.cssProperties, row); for (Node rowChild : child.childNodes()) { if ("th".equals(rowChild.nodeName()) || "td".equals(rowChild.nodeName())) { final MList contents = new MListImpl(); final MParagraph newParagraph = new MParagraphImpl(contents, null); final MCell cell = new MCellImpl(contents, null); - final Context localContext = context.copy(); - applyGlobalAttibutes(localContext, rowChild); + final Context localCellContext = context.copy(); + applyGlobalAttibutes(localCellContext, rowChild); if ("th".equals(rowChild.nodeName())) { cell.setHAlignment(HAlignment.CENTER); - setModifiers(localContext.style, MStyle.FONT_BOLD); + setModifiers(localCellContext.style, MStyle.FONT_BOLD); } if (rowChild.hasAttr(WIDTH_ATTR)) { setCellWidth(cell, rowChild.attr(WIDTH_ATTR)); } - CSS_PARSER.setStyle(localContext.cssProperties, cell); - walkChildren(rowChild, localContext, newParagraph); + CSS_PARSER.setStyle(localCellContext.cssProperties, cell); + walkChildren(rowChild, localCellContext, newParagraph); createNeededParagraphes(newParagraph); insertMergedCells(row, rowChild, cell, rowSpans, vMergeCopies); } diff --git a/plugins/org.obeonetwork.m2doc.html/src/org/obeonetwork/m2doc/html/services/Parser.java b/plugins/org.obeonetwork.m2doc.html/src/org/obeonetwork/m2doc/html/services/Parser.java index 2d363607e..941440c0d 100644 --- a/plugins/org.obeonetwork.m2doc.html/src/org/obeonetwork/m2doc/html/services/Parser.java +++ b/plugins/org.obeonetwork.m2doc.html/src/org/obeonetwork/m2doc/html/services/Parser.java @@ -21,6 +21,8 @@ import org.obeonetwork.m2doc.element.MStyle; import org.obeonetwork.m2doc.element.MTable.MCell; import org.obeonetwork.m2doc.element.MTable.MCell.WidthType; +import org.obeonetwork.m2doc.element.MTable.MRow; +import org.obeonetwork.m2doc.element.MTable.MRow.HeightRule; /** * Abstract parser class for utility methods. @@ -49,6 +51,11 @@ public abstract class Parser { */ protected static final String WIDTH = "width"; + /** + * The height attribute or CSS property. + */ + protected static final String HEIGHT = "height"; + /** * The % string. */ @@ -504,4 +511,24 @@ protected void setCellWidth(MCell mCell, String width) { } } + /** + * Sets the given {@link MRow} to the given height. + * + * @param row + * the {@link MRow} + * @param height + * the height + */ + protected void setRowHeight(MRow row, String height) { + final int relativeHeight = getRelativeSize(height); + if (relativeHeight == -1) { + double pixels = (double) getPixels(height); + if (pixels == -1) { + pixels = Integer.valueOf(height); + } + row.setHeight((int) pixels * 10); + row.setHeightRule(HeightRule.AT_LEAST); + } + } + } diff --git a/plugins/org.obeonetwork.m2doc/src/org/obeonetwork/m2doc/element/MTable.java b/plugins/org.obeonetwork.m2doc/src/org/obeonetwork/m2doc/element/MTable.java index d57f8d623..ebd8e8bcf 100644 --- a/plugins/org.obeonetwork.m2doc/src/org/obeonetwork/m2doc/element/MTable.java +++ b/plugins/org.obeonetwork.m2doc/src/org/obeonetwork/m2doc/element/MTable.java @@ -91,6 +91,27 @@ enum MTableAlign { * @author ldelaigue */ public interface MRow { + + /** + * The height rule. + * + * @author Yvan Lussaud + */ + enum HeightRule { + /** + * Auto height. + */ + AUTO, + /** + * Excact height. + */ + EXACT, + /** + * At least height. + */ + AT_LEAST; + } + /** * The row's defined cells (i.e. non-empty cells). A row may have no cell at all, or may not have a cell for each column of its * table. @@ -98,6 +119,37 @@ public interface MRow { * @return The row's defined cells. */ List getCells(); + + /** + * Gets the height. + * + * @return the height if any, -1 otherwise + */ + int getHeight(); + + /** + * Set the height. + * + * @param height + * the height, -1 for default + */ + void setHeight(int height); + + /** + * Gets the {@link HeightRule}. + * + * @return the {@link HeightRule} if any, null otherwise + */ + HeightRule getHeightRule(); + + /** + * Sets the {@link HeightRule}. + * + * @param rule + * the {@link HeightRule} + */ + void setHeightRule(HeightRule rule); + } /** @@ -243,7 +295,7 @@ enum WidthType { /** * Gets the width. * - * @return the width + * @return the width, -1 otherwise */ int getWitdh(); @@ -258,7 +310,7 @@ enum WidthType { /** * Gets the {@link WidthType}. * - * @return the {@link WidthType} if any, -1 otherwise + * @return the {@link WidthType} if any, null otherwise */ WidthType getWidthType(); diff --git a/plugins/org.obeonetwork.m2doc/src/org/obeonetwork/m2doc/element/impl/MTableImpl.java b/plugins/org.obeonetwork.m2doc/src/org/obeonetwork/m2doc/element/impl/MTableImpl.java index bf7e84aa6..60263b10a 100644 --- a/plugins/org.obeonetwork.m2doc/src/org/obeonetwork/m2doc/element/impl/MTableImpl.java +++ b/plugins/org.obeonetwork.m2doc/src/org/obeonetwork/m2doc/element/impl/MTableImpl.java @@ -32,6 +32,16 @@ public class MTableImpl implements MTable { */ public static class MRowImpl implements MRow { + /** + * The height. + */ + private int height = -1; + + /** + * The {@link HeightRule}. + */ + private HeightRule heightRule; + /** * The {@link List} of {@link MCell}. */ @@ -41,6 +51,27 @@ public static class MRowImpl implements MRow { public List getCells() { return cells; } + + @Override + public int getHeight() { + return height; + } + + @Override + public void setHeight(int height) { + this.height = height; + + } + + @Override + public HeightRule getHeightRule() { + return heightRule; + } + + @Override + public void setHeightRule(HeightRule rule) { + this.heightRule = rule; + } } /** diff --git a/plugins/org.obeonetwork.m2doc/src/org/obeonetwork/m2doc/generator/M2DocEvaluator.java b/plugins/org.obeonetwork.m2doc/src/org/obeonetwork/m2doc/generator/M2DocEvaluator.java index 9078be5ee..c87d4f6fe 100644 --- a/plugins/org.obeonetwork.m2doc/src/org/obeonetwork/m2doc/generator/M2DocEvaluator.java +++ b/plugins/org.obeonetwork.m2doc/src/org/obeonetwork/m2doc/generator/M2DocEvaluator.java @@ -34,6 +34,7 @@ import org.apache.poi.xwpf.usermodel.IRunBody; import org.apache.poi.xwpf.usermodel.ParagraphAlignment; import org.apache.poi.xwpf.usermodel.TableRowAlign; +import org.apache.poi.xwpf.usermodel.TableRowHeightRule; import org.apache.poi.xwpf.usermodel.TableWidthType; import org.apache.poi.xwpf.usermodel.UnderlinePatterns; import org.apache.poi.xwpf.usermodel.VerticalAlign; @@ -1408,13 +1409,13 @@ private void fillTable(XWPFTable xwpfTable, MTable mTable) { } // Iterate over the rows - for (int row = 0; row < mTable.getRows().size(); row++) { - final MRow mRow = mTable.getRows().get(row); + for (MRow mRow : mTable.getRows()) { final XWPFTableRow xwpfRow = xwpfTable.createRow(); while (!xwpfRow.getTableCells().isEmpty()) { xwpfRow.removeCell(0); } xwpfRow.getCtRow().getTcList().clear(); + setRowHeight(xwpfRow, mRow); // Iterate over the columns for (int column = 0; column < mRow.getCells().size(); column++) { @@ -1435,7 +1436,42 @@ private void fillTable(XWPFTable xwpfTable, MTable mTable) { && xwpfCell.getCTTc().getTcPr().isSetTcBorders()) { xwpfCell.getCTTc().getTcPr().unsetTcBorders(); } + } + } + } + + /** + * Sets the for the given row. + * + * @param xwpfRow + * the {@link XWPFTableRow} + * @param mRow + * the {@link MRow} + */ + private void setRowHeight(XWPFTableRow xwpfRow, MRow mRow) { + if (mRow != null) { + if (mRow.getHeightRule() != null) { + final TableRowHeightRule rule; + switch (mRow.getHeightRule()) { + case AUTO: + rule = TableRowHeightRule.AUTO; + break; + case EXACT: + rule = TableRowHeightRule.AT_LEAST; + break; + + case AT_LEAST: + rule = TableRowHeightRule.AT_LEAST; + break; + + default: + throw new IllegalStateException(); + } + xwpfRow.setHeightRule(rule); + } + if (mRow.getHeight() != -1) { + xwpfRow.setHeight(mRow.getHeight()); } } } diff --git a/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/doc.html b/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/doc.html new file mode 100644 index 000000000..4330e879b --- /dev/null +++ b/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/doc.html @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +
FirstnameLastnameAge
JillSmith50
EveJackson94
JohnDoe80
+ + + + diff --git a/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/tableRowHeight-expected-ast.txt b/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/tableRowHeight-expected-ast.txt new file mode 100644 index 000000000..3f0e1f694 --- /dev/null +++ b/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/tableRowHeight-expected-ast.txt @@ -0,0 +1,11 @@ + +=== HEADER === + +=== BODY === + + A simple demonstration of a query : + [query: .fromHTMLURI('doc.html')] + End of demonstration. +=== FOOTER === + +=== TEMPLATES === \ No newline at end of file diff --git a/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/tableRowHeight-expected-generation-messages.txt b/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/tableRowHeight-expected-generation-messages.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/tableRowHeight-expected-generation.docx b/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/tableRowHeight-expected-generation.docx new file mode 100644 index 0000000000000000000000000000000000000000..857abe7817468b55b216873377d02723e51e4150 GIT binary patch literal 12390 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 literal 0 HcmV?d00001 diff --git a/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/tableRowHeight-expected-validation.docx b/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/tableRowHeight-expected-validation.docx new file mode 100644 index 000000000..e69de29bb diff --git a/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/tableRowHeight-template.docx b/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeight/tableRowHeight-template.docx new file mode 100644 index 0000000000000000000000000000000000000000..6cd09972fe0276716e182f8c4b8c9c202c3de243 GIT binary patch literal 12294 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%0AD|Ll6eqceLVJFgg`CN55t*^W_(p55$=C2UN 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 + diff --git a/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeightRelative/doc.html b/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeightRelative/doc.html new file mode 100644 index 000000000..2cff0b71e --- /dev/null +++ b/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeightRelative/doc.html @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +
FirstnameLastnameAge
JillSmith50
EveJackson94
JohnDoe80
+ + + + diff --git a/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeightRelative/tableRowHeightRelative-expected-ast.txt b/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeightRelative/tableRowHeightRelative-expected-ast.txt new file mode 100644 index 000000000..3f0e1f694 --- /dev/null +++ b/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeightRelative/tableRowHeightRelative-expected-ast.txt @@ -0,0 +1,11 @@ + +=== HEADER === + +=== BODY === + + A simple demonstration of a query : + [query: .fromHTMLURI('doc.html')] + End of demonstration. +=== FOOTER === + +=== TEMPLATES === \ No newline at end of file diff --git a/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeightRelative/tableRowHeightRelative-expected-generation-messages.txt b/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeightRelative/tableRowHeightRelative-expected-generation-messages.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeightRelative/tableRowHeightRelative-expected-generation.docx b/tests/org.obeonetwork.m2doc.html.tests/resources/css/tableRowHeightRelative/tableRowHeightRelative-expected-generation.docx new file mode 100644 index 0000000000000000000000000000000000000000..d82f6158a2136faae11e71b0ca38538c0e13b4a5 GIT binary patch literal 12368 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%0AD|Ll6eqceLVJFgg`CN55t*^W_(p55$=C2UN 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 + diff --git a/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/doc.html b/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/doc.html new file mode 100644 index 000000000..1469ef350 --- /dev/null +++ b/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/doc.html @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +
FirstnameLastnameAge
JillSmith50
EveJackson94
JohnDoe80
+ + + + diff --git a/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/tableRowHeight-expected-ast.txt b/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/tableRowHeight-expected-ast.txt new file mode 100644 index 000000000..3f0e1f694 --- /dev/null +++ b/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/tableRowHeight-expected-ast.txt @@ -0,0 +1,11 @@ + +=== HEADER === + +=== BODY === + + A simple demonstration of a query : + [query: .fromHTMLURI('doc.html')] + End of demonstration. +=== FOOTER === + +=== TEMPLATES === \ No newline at end of file diff --git a/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/tableRowHeight-expected-generation-messages.txt b/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/tableRowHeight-expected-generation-messages.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/tableRowHeight-expected-generation.docx b/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/tableRowHeight-expected-generation.docx new file mode 100644 index 0000000000000000000000000000000000000000..f7ed67af9ab6516d91189e8ae865a99f9bb541aa GIT binary patch literal 12390 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 literal 0 HcmV?d00001 diff --git a/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/tableRowHeight-expected-validation.docx b/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/tableRowHeight-expected-validation.docx new file mode 100644 index 000000000..e69de29bb diff --git a/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/tableRowHeight-template.docx b/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeight/tableRowHeight-template.docx new file mode 100644 index 0000000000000000000000000000000000000000..6cd09972fe0276716e182f8c4b8c9c202c3de243 GIT binary patch literal 12294 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%0AD|Ll6eqceLVJFgg`CN55t*^W_(p55$=C2UN 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 + diff --git a/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeightRelative/doc.html b/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeightRelative/doc.html new file mode 100644 index 000000000..89d5ce145 --- /dev/null +++ b/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeightRelative/doc.html @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +
FirstnameLastnameAge
JillSmith50
EveJackson94
JohnDoe80
+ + + + diff --git a/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeightRelative/tableRowHeightRelative-expected-ast.txt b/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeightRelative/tableRowHeightRelative-expected-ast.txt new file mode 100644 index 000000000..3f0e1f694 --- /dev/null +++ b/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeightRelative/tableRowHeightRelative-expected-ast.txt @@ -0,0 +1,11 @@ + +=== HEADER === + +=== BODY === + + A simple demonstration of a query : + [query: .fromHTMLURI('doc.html')] + End of demonstration. +=== FOOTER === + +=== TEMPLATES === \ No newline at end of file diff --git a/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeightRelative/tableRowHeightRelative-expected-generation-messages.txt b/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeightRelative/tableRowHeightRelative-expected-generation-messages.txt new file mode 100644 index 000000000..e69de29bb diff --git a/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeightRelative/tableRowHeightRelative-expected-generation.docx b/tests/org.obeonetwork.m2doc.html.tests/resources/html/tableRowHeightRelative/tableRowHeightRelative-expected-generation.docx new file mode 100644 index 0000000000000000000000000000000000000000..03f77027d8aab94b392eee4b2be5bdae08d8044c GIT binary patch literal 12368 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%0AD|Ll6eqceLVJFgg`CN55t*^W_(p55$=C2UN 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 +