From fc3a242a5dc163f8969a90d2ffd0e0c1345e82e3 Mon Sep 17 00:00:00 2001 From: Ryan Kurtz Date: Mon, 7 Apr 2025 11:26:44 -0400 Subject: [PATCH] GP-0: Styling HTML code blocks in converted Markdown files --- .../java/ghidra/markdown/MarkdownToHtml.java | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/GhidraBuild/MarkdownSupport/src/main/java/ghidra/markdown/MarkdownToHtml.java b/GhidraBuild/MarkdownSupport/src/main/java/ghidra/markdown/MarkdownToHtml.java index 2f1d2be710..152d32bff2 100644 --- a/GhidraBuild/MarkdownSupport/src/main/java/ghidra/markdown/MarkdownToHtml.java +++ b/GhidraBuild/MarkdownSupport/src/main/java/ghidra/markdown/MarkdownToHtml.java @@ -23,8 +23,7 @@ import org.commonmark.Extension; import org.commonmark.ext.footnotes.FootnotesExtension; import org.commonmark.ext.gfm.tables.*; import org.commonmark.ext.heading.anchor.HeadingAnchorExtension; -import org.commonmark.node.Link; -import org.commonmark.node.Node; +import org.commonmark.node.*; import org.commonmark.parser.Parser; import org.commonmark.renderer.html.*; @@ -58,6 +57,7 @@ public class MarkdownToHtml { HtmlRenderer renderer = HtmlRenderer.builder() .extensions(extensions) .attributeProviderFactory(new TableAttributeProvider()) + .attributeProviderFactory(new CodeAttributeProvider()) .attributeProviderFactory(new LinkAttributeProvider()) .build(); @@ -94,6 +94,26 @@ public class MarkdownToHtml { } } + /** + * Class to add custom style to code tags and code blocks + */ + private static class CodeAttributeProvider + implements AttributeProvider, AttributeProviderFactory { + + @Override + public AttributeProvider create(AttributeProviderContext attributeProviderContext) { + return new CodeAttributeProvider(); + } + + @Override + public void setAttributes(Node node, String tagName, Map attributes) { + if (node instanceof Code || node instanceof IndentedCodeBlock || + node instanceof FencedCodeBlock) { + attributes.put("style", "background-color: #eef;"); + } + } + } + /** * Class to help adjust links to Markdown files to instead become links to HTML files */