From cb1bc4cd15593ce561c82a6fe8590571d1cb8890 Mon Sep 17 00:00:00 2001 From: Tony Date: Fri, 14 Apr 2023 16:13:25 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BC=98=E5=8C=96TableMark=E3=80=91?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B5=8B=E8=AF=95=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../conan/mdcoffee/markdown/TableMark.java | 31 ++++++++++++------- .../pers/conan/mdcoffee/TableMarkTest.java | 30 ++++++++++++++++++ 2 files changed, 49 insertions(+), 12 deletions(-) create mode 100644 src/test/java/pers/conan/mdcoffee/TableMarkTest.java diff --git a/src/main/java/pers/conan/mdcoffee/markdown/TableMark.java b/src/main/java/pers/conan/mdcoffee/markdown/TableMark.java index e5611e9..60e8819 100644 --- a/src/main/java/pers/conan/mdcoffee/markdown/TableMark.java +++ b/src/main/java/pers/conan/mdcoffee/markdown/TableMark.java @@ -2,6 +2,8 @@ package pers.conan.mdcoffee.markdown; import java.util.ArrayList; import java.util.List; +import java.util.StringJoiner; +import java.util.stream.Collectors; import pers.conan.mdcoffee.text.MarkDown; import pers.conan.mdcoffee.util.MarkUtil; @@ -65,24 +67,29 @@ public class TableMark extends BaseMark { @Override public void mark() { - StringBuilder translate = new StringBuilder(""); - + StringBuilder translate = new StringBuilder(); + if (MarkUtil.isEmpty(this.head)) { // 表头为空 this.head = new TableHeadMark(); } translate.append(this.head.translate()); // 标记表头 - - translate.append(String.valueOf(MarkDown.NEXT) + "| --- |"); // 分隔表头与表行 - - if (MarkUtil.isEmpty(this.rows)) { // 表行为空 - translate.append("| |"); - } else { // 表行不为空 - for (int i = 0; i< this.rows.size(); i ++) { - translate.append(String.valueOf(MarkDown.NEXT) + this.rows.get(i).translate()); // 逐行标记 + + // 该写法不通用 +// translate.append(String.valueOf(MarkDown.NEXT) + "| --- |"); // 分隔表头与表行 + // 通用写法 + + translate.append(MarkDown.NEXT); + translate.append("|"); + translate.append(this.getHead().getHeader().stream().map((cellMark) -> "---").collect(Collectors.joining("|"))); + translate.append("|"); + + if (!MarkUtil.isEmpty(this.rows)) { + for (TableRowMark rowMark : this.rows) { + translate.append(MarkDown.NEXT).append(rowMark.translate()); // 逐行标记 } } - translate.append(String.valueOf(MarkDown.NEXT)); // 表格标记的结尾需要换行 - + translate.append(MarkDown.NEXT); // 表格标记的结尾需要换行 + this.translated = translate.toString(); // 完成标记 } diff --git a/src/test/java/pers/conan/mdcoffee/TableMarkTest.java b/src/test/java/pers/conan/mdcoffee/TableMarkTest.java new file mode 100644 index 0000000..a573b3d --- /dev/null +++ b/src/test/java/pers/conan/mdcoffee/TableMarkTest.java @@ -0,0 +1,30 @@ +package pers.conan.mdcoffee; + +import pers.conan.mdcoffee.markdown.CellMark; +import pers.conan.mdcoffee.markdown.TableHeadMark; +import pers.conan.mdcoffee.markdown.TableMark; +import pers.conan.mdcoffee.markdown.TableRowMark; + +import java.util.Arrays; + +public class TableMarkTest { + + public static void main(String[] args) { + TableMark tableMark = new TableMark(); + TableHeadMark headMark = new TableHeadMark(Arrays.asList(new CellMark("字段"), new CellMark("类型"), new CellMark("说明"))); + tableMark.setHead(headMark); + TableRowMark row1 = new TableRowMark(Arrays.asList(new CellMark("name"), new CellMark("String"), new CellMark("姓名"))); + tableMark.put(row1); + TableRowMark row2 = new TableRowMark(Arrays.asList(new CellMark("remarks"), new CellMark("String"), new CellMark("备注"))); + tableMark.put(row2); + System.out.println(tableMark.translate()); + + System.out.println(); + TableMark emptyTable = new TableMark(); + TableHeadMark emptyTableHead = new TableHeadMark(Arrays.asList(new CellMark("字段"), new CellMark("类型"), new CellMark("说明"))); + emptyTable.setHead(emptyTableHead); + System.out.println(emptyTable.translate()); + + + } +} -- Gitee