This is an automated email from the ASF dual-hosted git repository.
hansva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git
The following commit(s) were added to refs/heads/main by this push:
new d75e2ec816 issue #7442 : markdown tables not rendered (#7443)
d75e2ec816 is described below
commit d75e2ec8166b5b8d75397abb32940c3013de374c
Author: Matt Casters <[email protected]>
AuthorDate: Mon Jul 6 20:46:48 2026 +0200
issue #7442 : markdown tables not rendered (#7443)
---
plugins/transforms/textfile/pom.xml | 18 +++++++
.../types/MarkDownExplorerFileTypeHandler.java | 55 +++++++++++++++++++++-
2 files changed, 71 insertions(+), 2 deletions(-)
diff --git a/plugins/transforms/textfile/pom.xml
b/plugins/transforms/textfile/pom.xml
index 5cd80103f0..0d516b3407 100644
--- a/plugins/transforms/textfile/pom.xml
+++ b/plugins/transforms/textfile/pom.xml
@@ -46,6 +46,24 @@
<version>${commonmark.version}</version>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.commonmark</groupId>
+ <artifactId>commonmark-ext-footnotes</artifactId>
+ <version>${commonmark.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.commonmark</groupId>
+ <artifactId>commonmark-ext-gfm-tables</artifactId>
+ <version>${commonmark.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.commonmark</groupId>
+ <artifactId>commonmark-ext-task-list-items</artifactId>
+ <version>${commonmark.version}</version>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
<build>
diff --git
a/plugins/transforms/textfile/src/main/java/org/apache/hop/pipeline/transforms/types/MarkDownExplorerFileTypeHandler.java
b/plugins/transforms/textfile/src/main/java/org/apache/hop/pipeline/transforms/types/MarkDownExplorerFileTypeHandler.java
index 7a0508b07b..00ec78346f 100644
---
a/plugins/transforms/textfile/src/main/java/org/apache/hop/pipeline/transforms/types/MarkDownExplorerFileTypeHandler.java
+++
b/plugins/transforms/textfile/src/main/java/org/apache/hop/pipeline/transforms/types/MarkDownExplorerFileTypeHandler.java
@@ -22,6 +22,7 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
+import java.util.List;
import org.apache.hop.core.Props;
import org.apache.hop.core.gui.plugin.GuiPlugin;
import org.apache.hop.core.gui.plugin.toolbar.GuiToolbarElement;
@@ -37,6 +38,10 @@ import
org.apache.hop.ui.hopgui.perspective.explorer.ExplorerFile;
import org.apache.hop.ui.hopgui.perspective.explorer.ExplorerPerspective;
import
org.apache.hop.ui.hopgui.perspective.explorer.file.types.text.BaseTextExplorerFileTypeHandler;
import org.apache.hop.ui.util.EnvironmentUtils;
+import org.commonmark.Extension;
+import org.commonmark.ext.footnotes.FootnotesExtension;
+import org.commonmark.ext.gfm.tables.TablesExtension;
+import org.commonmark.ext.task.list.items.TaskListItemsExtension;
import org.commonmark.node.Node;
import org.commonmark.parser.Parser;
import org.commonmark.renderer.html.HtmlRenderer;
@@ -56,6 +61,10 @@ public class MarkDownExplorerFileTypeHandler extends
BaseTextExplorerFileTypeHan
public static final String TOOLBAR_ITEM_PREVIEW =
"MarkDownExplorerFileTypeHandler-ToolBar-Preview";
+ private static final List<Extension> MARKDOWN_EXTENSIONS =
+ List.of(
+ TablesExtension.create(), TaskListItemsExtension.create(),
FootnotesExtension.create());
+
public MarkDownExplorerFileTypeHandler(
HopGui hopGui, ExplorerPerspective perspective, ExplorerFile
explorerFile) {
super(hopGui, perspective, explorerFile);
@@ -125,8 +134,8 @@ public class MarkDownExplorerFileTypeHandler extends
BaseTextExplorerFileTypeHan
String markdown = editorWidget.getText();
// Parse markdown to HTML body content
- Parser parser = Parser.builder().build();
- HtmlRenderer renderer = HtmlRenderer.builder().build();
+ Parser parser = Parser.builder().extensions(MARKDOWN_EXTENSIONS).build();
+ HtmlRenderer renderer =
HtmlRenderer.builder().extensions(MARKDOWN_EXTENSIONS).build();
Node document = parser.parse(markdown);
String htmlContent = renderer.render(document);
@@ -186,6 +195,22 @@ public class MarkDownExplorerFileTypeHandler extends
BaseTextExplorerFileTypeHan
html.append(" border-left-width: 4px;\n");
html.append(" border-left-style: solid;\n");
html.append("}\n");
+ html.append("table {\n");
+ html.append(" width: 100%;\n");
+ html.append(" margin: 1.5em 0;\n");
+ html.append(" border-collapse: collapse;\n");
+ html.append(" border-radius: 6px;\n");
+ html.append(" overflow: hidden;\n");
+ html.append(" font-size: 0.95em;\n");
+ html.append("}\n");
+ html.append("th, td {\n");
+ html.append(" padding: 0.6em 0.85em;\n");
+ html.append(" border: 1px solid;\n");
+ html.append(" text-align: left;\n");
+ html.append("}\n");
+ html.append("th {\n");
+ html.append(" font-weight: 600;\n");
+ html.append("}\n");
if (PropsUi.getInstance().isDarkMode()) {
html.append("body {\n");
@@ -211,6 +236,19 @@ public class MarkDownExplorerFileTypeHandler extends
BaseTextExplorerFileTypeHan
html.append(" color: #94a3b8;\n");
html.append(" background-color: #0f172a;\n");
html.append("}\n");
+ html.append("table {\n");
+ html.append(" background-color: #0f172a;\n");
+ html.append("}\n");
+ html.append("th, td {\n");
+ html.append(" border-color: #334155;\n");
+ html.append("}\n");
+ html.append("th {\n");
+ html.append(" background-color: #1e293b;\n");
+ html.append(" color: #f8fafc;\n");
+ html.append("}\n");
+ html.append("tbody tr:nth-child(even) {\n");
+ html.append(" background-color: #111827;\n");
+ html.append("}\n");
} else {
html.append("body {\n");
html.append(" background-color: #f8fafc;\n");
@@ -235,6 +273,19 @@ public class MarkDownExplorerFileTypeHandler extends
BaseTextExplorerFileTypeHan
html.append(" color: #64748b;\n");
html.append(" background-color: #f8fafc;\n");
html.append("}\n");
+ html.append("table {\n");
+ html.append(" background-color: #ffffff;\n");
+ html.append("}\n");
+ html.append("th, td {\n");
+ html.append(" border-color: #e2e8f0;\n");
+ html.append("}\n");
+ html.append("th {\n");
+ html.append(" background-color: #f1f5f9;\n");
+ html.append(" color: #0f172a;\n");
+ html.append("}\n");
+ html.append("tbody tr:nth-child(even) {\n");
+ html.append(" background-color: #f8fafc;\n");
+ html.append("}\n");
}
html.append("</style>\n</head>\n<body>\n");
html.append(htmlContent);