From f016950ac751d13fdf29c3ef052d30345128254c Mon Sep 17 00:00:00 2001 From: Willem van den Ende Date: Thu, 30 Apr 2026 18:25:09 +0100 Subject: [PATCH] add DOCX support to Mermaid diagram rendering - Transform.hs: DOCX case returns blocks unchanged (no unicode substitution needed) - Mermaid.hs: DOCX uses PNG images at normal scale (like HTML, not 3x like PDF) --- .gitignore | 1 + src/Docster/Mermaid.hs | 3 +++ src/Docster/Transform.hs | 3 ++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index fc410f3..65bd2c2 100644 --- a/.gitignore +++ b/.gitignore @@ -18,4 +18,5 @@ stack-setup-2.yaml analytics-charts.md architecture-deep-dive.md devcontainer.org +.devcontainer/ root.json diff --git a/src/Docster/Mermaid.hs b/src/Docster/Mermaid.hs index f288028..efe8f06 100644 --- a/src/Docster/Mermaid.hs +++ b/src/Docster/Mermaid.hs @@ -79,6 +79,8 @@ generateDiagramPaths (DiagramConfig _ (OutputDir outDir) format) (DiagramId diag in (svgFile, T.pack $ takeFileName svgFile) PDF -> let pngFile = outDir diagIdStr <> ".png" in (pngFile, T.pack pngFile) + DOCX -> let pngFile = outDir diagIdStr <> ".png" + in (pngFile, T.pack pngFile) -- | Puppeteer configuration content for disabling sandbox puppeteerConfigContent :: Text @@ -90,6 +92,7 @@ callMermaidProcess format mmdFile outputFile = do let baseArgs = case format of HTML -> ["-i", mmdFile, "-o", outputFile] PDF -> ["-i", mmdFile, "-o", outputFile, "--scale", "3"] + DOCX -> ["-i", mmdFile, "-o", outputFile] -- Create temporary puppeteer config file result <- bracket diff --git a/src/Docster/Transform.hs b/src/Docster/Transform.hs index 09737b6..7676c53 100644 --- a/src/Docster/Transform.hs +++ b/src/Docster/Transform.hs @@ -36,8 +36,9 @@ transformDocument config docName (Pandoc meta blocks) = do Left err -> return $ Left err Right (newBlocks, _finalState) -> case dcOutputFormat config of - PDF -> return $ Right $ substituteUnicodeSymbols (Pandoc meta newBlocks) + PDF -> return $ Right $ substituteUnicodeSymbols (Pandoc meta newBlocks) HTML -> return $ Right $ Pandoc meta newBlocks + DOCX -> return $ Right $ Pandoc meta newBlocks -- | Process a single block with heading tracking state processBlockStateful :: DiagramConfig -> Block -> TransformM Block