From 894e1042b02dbbeefb1f106f2a939e8cef3a62b2 Mon Sep 17 00:00:00 2001 From: Jarno Elovirta Date: Sun, 18 Aug 2024 19:59:06 +0300 Subject: [PATCH] Add support for codeblock language prefix Signed-off-by: Jarno Elovirta --- .../elovirta/dita/markdown/DitaRendererOptions.java | 2 ++ .../dita/markdown/renderer/TopicRenderer.java | 2 +- src/main/resources/ast2markdown.xsl | 12 ++++++++++-- src/test/resources/ast/codeblock.xml | 4 ++++ src/test/resources/dita/codeblock.dita | 4 ++++ src/test/resources/hdita/codeblock.html | 4 ++++ src/test/resources/html/codeblock.html | 4 ++++ src/test/resources/markdown/codeblock.md | 8 ++++++++ src/test/resources/output/ast/codeblock.xml | 4 +++- src/test/resources/output/markdown/codeblock.md | 8 ++++++++ src/test/resources/xdita/codeblock.dita | 4 ++++ 11 files changed, 52 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/elovirta/dita/markdown/DitaRendererOptions.java b/src/main/java/com/elovirta/dita/markdown/DitaRendererOptions.java index f9e3c6fa..5d6c7368 100644 --- a/src/main/java/com/elovirta/dita/markdown/DitaRendererOptions.java +++ b/src/main/java/com/elovirta/dita/markdown/DitaRendererOptions.java @@ -6,9 +6,11 @@ public class DitaRendererOptions { public final boolean doNotRenderLinksInDocument; public final String noLanguageClass; + public final String languageClassPrefix; public DitaRendererOptions(DataHolder options) { doNotRenderLinksInDocument = DitaRenderer.DO_NOT_RENDER_LINKS.get(options); noLanguageClass = DitaRenderer.FENCED_CODE_NO_LANGUAGE_CLASS.get(options); + languageClassPrefix = DitaRenderer.FENCED_CODE_LANGUAGE_CLASS_PREFIX.get(options); } } diff --git a/src/main/java/com/elovirta/dita/markdown/renderer/TopicRenderer.java b/src/main/java/com/elovirta/dita/markdown/renderer/TopicRenderer.java index 2a6b3ce9..fb5d66c6 100644 --- a/src/main/java/com/elovirta/dita/markdown/renderer/TopicRenderer.java +++ b/src/main/java/com/elovirta/dita/markdown/renderer/TopicRenderer.java @@ -1293,7 +1293,7 @@ private void render(final FencedCodeBlock node, final NodeRendererContext contex } else { language = info.subSequence(0, space); } - atts.add("outputclass", /*context.getDitaOptions().languageClassPrefix +*/language.unescape()); + atts.add("outputclass", context.getDitaOptions().languageClassPrefix + language.unescape()); } else { String noLanguageClass = context.getDitaOptions().noLanguageClass.trim(); if (!noLanguageClass.isEmpty()) { diff --git a/src/main/resources/ast2markdown.xsl b/src/main/resources/ast2markdown.xsl index 36c3e2e6..36ef9975 100644 --- a/src/main/resources/ast2markdown.xsl +++ b/src/main/resources/ast2markdown.xsl @@ -121,13 +121,21 @@ + + + + + ``` - - + + + + + diff --git a/src/test/resources/ast/codeblock.xml b/src/test/resources/ast/codeblock.xml index 97829669..66169811 100644 --- a/src/test/resources/ast/codeblock.xml +++ b/src/test/resources/ast/codeblock.xml @@ -11,6 +11,10 @@ Fenced block: items.foreach(println) + Syntax highlighting: + function add(a, b) { + return a + b; +} diff --git a/src/test/resources/dita/codeblock.dita b/src/test/resources/dita/codeblock.dita index 06254936..4a64d601 100644 --- a/src/test/resources/dita/codeblock.dita +++ b/src/test/resources/dita/codeblock.dita @@ -11,5 +11,9 @@

Fenced block:

items.foreach(println) +

Syntax highlighting:

+ function add(a, b) { + return a + b; +} diff --git a/src/test/resources/hdita/codeblock.html b/src/test/resources/hdita/codeblock.html index 72c527db..2fe5ad27 100644 --- a/src/test/resources/hdita/codeblock.html +++ b/src/test/resources/hdita/codeblock.html @@ -8,4 +8,8 @@

Codeblock

println(i)

Fenced block:

items.foreach(println)
+

Syntax highlighting:

+
function add(a, b) {
+  return a + b;
+}
diff --git a/src/test/resources/html/codeblock.html b/src/test/resources/html/codeblock.html index 5ff67731..a8fdcd27 100644 --- a/src/test/resources/html/codeblock.html +++ b/src/test/resources/html/codeblock.html @@ -8,4 +8,8 @@

Codeblock

println(i)

Fenced block:

items.foreach(println)
+

Syntax highlighting:

+
function add(a, b) {
+  return a + b;
+}
diff --git a/src/test/resources/markdown/codeblock.md b/src/test/resources/markdown/codeblock.md index f6e9c769..781bbfca 100644 --- a/src/test/resources/markdown/codeblock.md +++ b/src/test/resources/markdown/codeblock.md @@ -10,3 +10,11 @@ Fenced block: ```{.scala #foreach-example} items.foreach(println) ``` + +Syntax highlighting: + +```js +function add(a, b) { + return a + b; +} +``` diff --git a/src/test/resources/output/ast/codeblock.xml b/src/test/resources/output/ast/codeblock.xml index c96bc252..906d276f 100644 --- a/src/test/resources/output/ast/codeblock.xml +++ b/src/test/resources/output/ast/codeblock.xml @@ -1,4 +1,6 @@
Codeblock
Code example on for loop:for i in items: println(i) Fenced block:items.foreach(println) -
\ No newline at end of file +Syntax highlighting:function add(a, b) { + return a + b; +} \ No newline at end of file diff --git a/src/test/resources/output/markdown/codeblock.md b/src/test/resources/output/markdown/codeblock.md index 2d3e30ee..96eba305 100644 --- a/src/test/resources/output/markdown/codeblock.md +++ b/src/test/resources/output/markdown/codeblock.md @@ -15,3 +15,11 @@ items.foreach(println) ``` +Syntax highlighting: + +```js +function add(a, b) { + return a + b; +} +``` + diff --git a/src/test/resources/xdita/codeblock.dita b/src/test/resources/xdita/codeblock.dita index 6664e9b5..704efd22 100644 --- a/src/test/resources/xdita/codeblock.dita +++ b/src/test/resources/xdita/codeblock.dita @@ -10,5 +10,9 @@ println(i)

Fenced block:

items.foreach(println)
+

Syntax highlighting:

+
function add(a, b) {
+  return a + b;
+}