From e8f539f622fac68d8a26bbf491a6e8d0843801e3 Mon Sep 17 00:00:00 2001 From: Ryan Kurtz Date: Mon, 7 Apr 2025 12:22:47 -0400 Subject: [PATCH] GP-0: Styling HTML headings in converted Markdown files --- .../java/ghidra/markdown/MarkdownToHtml.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/GhidraBuild/MarkdownSupport/src/main/java/ghidra/markdown/MarkdownToHtml.java b/GhidraBuild/MarkdownSupport/src/main/java/ghidra/markdown/MarkdownToHtml.java index 152d32bff2..2d73ccf79e 100644 --- a/GhidraBuild/MarkdownSupport/src/main/java/ghidra/markdown/MarkdownToHtml.java +++ b/GhidraBuild/MarkdownSupport/src/main/java/ghidra/markdown/MarkdownToHtml.java @@ -57,6 +57,7 @@ public class MarkdownToHtml { HtmlRenderer renderer = HtmlRenderer.builder() .extensions(extensions) .attributeProviderFactory(new TableAttributeProvider()) + .attributeProviderFactory(new HeadingAttributeProvider()) .attributeProviderFactory(new CodeAttributeProvider()) .attributeProviderFactory(new LinkAttributeProvider()) .build(); @@ -94,6 +95,25 @@ public class MarkdownToHtml { } } + /** + * Class to add custom style to headings + */ + private static class HeadingAttributeProvider + implements AttributeProvider, AttributeProviderFactory { + @Override + public AttributeProvider create(AttributeProviderContext attributeProviderContext) { + return new HeadingAttributeProvider(); + } + + @Override + public void setAttributes(Node node, String tagName, Map attributes) { + if (node instanceof Heading heading && heading.getLevel() <= 2) { + attributes.put("style", + "border-bottom: solid 1px; border-bottom-color: #cccccc; padding-bottom: 8px;"); + } + } + } + /** * Class to add custom style to code tags and code blocks */