From 14aef15337de7b9e489be7feb93d0c34b91ffdf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jari-Matti=20M=C3=A4kel=C3=A4?= Date: Wed, 1 Apr 2026 18:18:17 +0300 Subject: [PATCH 01/13] Remove redundant overrides --- .../matter/internal/YamlFrontMatterBlockParser.java | 10 ---------- .../org/commonmark/internal/DocumentBlockParser.java | 5 ----- 2 files changed, 15 deletions(-) diff --git a/commonmark-ext-yaml-front-matter/src/main/java/org/commonmark/ext/front/matter/internal/YamlFrontMatterBlockParser.java b/commonmark-ext-yaml-front-matter/src/main/java/org/commonmark/ext/front/matter/internal/YamlFrontMatterBlockParser.java index 469cf4e2f..f7f03c001 100644 --- a/commonmark-ext-yaml-front-matter/src/main/java/org/commonmark/ext/front/matter/internal/YamlFrontMatterBlockParser.java +++ b/commonmark-ext-yaml-front-matter/src/main/java/org/commonmark/ext/front/matter/internal/YamlFrontMatterBlockParser.java @@ -4,8 +4,6 @@ import org.commonmark.ext.front.matter.YamlFrontMatterNode; import org.commonmark.node.Block; import org.commonmark.node.Document; -import org.commonmark.parser.InlineParser; -import org.commonmark.parser.SourceLine; import org.commonmark.parser.block.*; import java.util.ArrayList; @@ -37,10 +35,6 @@ public Block getBlock() { return block; } - @Override - public void addLine(SourceLine line) { - } - @Override public BlockContinue tryContinue(ParserState parserState) { final CharSequence line = parserState.getLine().getContent(); @@ -91,10 +85,6 @@ public BlockContinue tryContinue(ParserState parserState) { } } - @Override - public void parseInlines(InlineParser inlineParser) { - } - private static String parseString(String s) { // Limited parsing of https://yaml.org/spec/1.2.2/#73-flow-scalar-styles // We assume input is well-formed and otherwise treat it as a plain string. In a real diff --git a/commonmark/src/main/java/org/commonmark/internal/DocumentBlockParser.java b/commonmark/src/main/java/org/commonmark/internal/DocumentBlockParser.java index db3d3854f..4b51275ee 100644 --- a/commonmark/src/main/java/org/commonmark/internal/DocumentBlockParser.java +++ b/commonmark/src/main/java/org/commonmark/internal/DocumentBlockParser.java @@ -2,7 +2,6 @@ import org.commonmark.node.Block; import org.commonmark.node.Document; -import org.commonmark.parser.SourceLine; import org.commonmark.parser.block.AbstractBlockParser; import org.commonmark.parser.block.BlockContinue; import org.commonmark.parser.block.ParserState; @@ -31,8 +30,4 @@ public BlockContinue tryContinue(ParserState state) { return BlockContinue.atIndex(state.getIndex()); } - @Override - public void addLine(SourceLine line) { - } - } From 3e440b8088595c638dcf2b2ca7f0a8968c56f2dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jari-Matti=20M=C3=A4kel=C3=A4?= Date: Wed, 1 Apr 2026 18:18:47 +0300 Subject: [PATCH 02/13] Remove redundant variable --- .../org/commonmark/ext/front/matter/YamlFrontMatterTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/commonmark-ext-yaml-front-matter/src/test/java/org/commonmark/ext/front/matter/YamlFrontMatterTest.java b/commonmark-ext-yaml-front-matter/src/test/java/org/commonmark/ext/front/matter/YamlFrontMatterTest.java index db17d4a4e..e0555dc0a 100644 --- a/commonmark-ext-yaml-front-matter/src/test/java/org/commonmark/ext/front/matter/YamlFrontMatterTest.java +++ b/commonmark-ext-yaml-front-matter/src/test/java/org/commonmark/ext/front/matter/YamlFrontMatterTest.java @@ -322,8 +322,7 @@ private Map> getFrontMatter(String input) { Node document = PARSER.parse(input); document.accept(visitor); - Map> data = visitor.getData(); - return data; + return visitor.getData(); } // Custom node for tests From 0397aa713fde94c6b1a4f80d95487a6b496f9bda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jari-Matti=20M=C3=A4kel=C3=A4?= Date: Wed, 1 Apr 2026 18:19:56 +0300 Subject: [PATCH 03/13] Replace anonymous classes with method refs --- .../gfm/strikethrough/StrikethroughExtension.java | 14 ++------------ .../commonmark/ext/gfm/tables/TablesExtension.java | 14 ++------------ .../java/org/commonmark/ext/ins/InsExtension.java | 14 ++------------ .../task/list/items/TaskListItemsExtension.java | 7 +------ .../org/commonmark/renderer/html/HtmlRenderer.java | 7 +------ .../renderer/text/TextContentRenderer.java | 7 +------ .../org/commonmark/test/SourceSpanRenderer.java | 2 +- .../java/org/commonmark/test/UsageExampleTest.java | 7 +------ 8 files changed, 11 insertions(+), 61 deletions(-) diff --git a/commonmark-ext-gfm-strikethrough/src/main/java/org/commonmark/ext/gfm/strikethrough/StrikethroughExtension.java b/commonmark-ext-gfm-strikethrough/src/main/java/org/commonmark/ext/gfm/strikethrough/StrikethroughExtension.java index 364205aed..3f5988f00 100644 --- a/commonmark-ext-gfm-strikethrough/src/main/java/org/commonmark/ext/gfm/strikethrough/StrikethroughExtension.java +++ b/commonmark-ext-gfm-strikethrough/src/main/java/org/commonmark/ext/gfm/strikethrough/StrikethroughExtension.java @@ -77,22 +77,12 @@ public void extend(Parser.Builder parserBuilder) { @Override public void extend(HtmlRenderer.Builder rendererBuilder) { - rendererBuilder.nodeRendererFactory(new HtmlNodeRendererFactory() { - @Override - public NodeRenderer create(HtmlNodeRendererContext context) { - return new StrikethroughHtmlNodeRenderer(context); - } - }); + rendererBuilder.nodeRendererFactory(StrikethroughHtmlNodeRenderer::new); } @Override public void extend(TextContentRenderer.Builder rendererBuilder) { - rendererBuilder.nodeRendererFactory(new TextContentNodeRendererFactory() { - @Override - public NodeRenderer create(TextContentNodeRendererContext context) { - return new StrikethroughTextContentNodeRenderer(context); - } - }); + rendererBuilder.nodeRendererFactory(StrikethroughTextContentNodeRenderer::new); } @Override diff --git a/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/TablesExtension.java b/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/TablesExtension.java index f754b8276..b49b9dab4 100644 --- a/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/TablesExtension.java +++ b/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/TablesExtension.java @@ -49,22 +49,12 @@ public void extend(Parser.Builder parserBuilder) { @Override public void extend(HtmlRenderer.Builder rendererBuilder) { - rendererBuilder.nodeRendererFactory(new HtmlNodeRendererFactory() { - @Override - public NodeRenderer create(HtmlNodeRendererContext context) { - return new TableHtmlNodeRenderer(context); - } - }); + rendererBuilder.nodeRendererFactory(TableHtmlNodeRenderer::new); } @Override public void extend(TextContentRenderer.Builder rendererBuilder) { - rendererBuilder.nodeRendererFactory(new TextContentNodeRendererFactory() { - @Override - public NodeRenderer create(TextContentNodeRendererContext context) { - return new TableTextContentNodeRenderer(context); - } - }); + rendererBuilder.nodeRendererFactory(TableTextContentNodeRenderer::new); } @Override diff --git a/commonmark-ext-ins/src/main/java/org/commonmark/ext/ins/InsExtension.java b/commonmark-ext-ins/src/main/java/org/commonmark/ext/ins/InsExtension.java index e8a53e59a..e16728de2 100644 --- a/commonmark-ext-ins/src/main/java/org/commonmark/ext/ins/InsExtension.java +++ b/commonmark-ext-ins/src/main/java/org/commonmark/ext/ins/InsExtension.java @@ -46,22 +46,12 @@ public void extend(Parser.Builder parserBuilder) { @Override public void extend(HtmlRenderer.Builder rendererBuilder) { - rendererBuilder.nodeRendererFactory(new HtmlNodeRendererFactory() { - @Override - public NodeRenderer create(HtmlNodeRendererContext context) { - return new InsHtmlNodeRenderer(context); - } - }); + rendererBuilder.nodeRendererFactory(InsHtmlNodeRenderer::new); } @Override public void extend(TextContentRenderer.Builder rendererBuilder) { - rendererBuilder.nodeRendererFactory(new TextContentNodeRendererFactory() { - @Override - public NodeRenderer create(TextContentNodeRendererContext context) { - return new InsTextContentNodeRenderer(context); - } - }); + rendererBuilder.nodeRendererFactory(InsTextContentNodeRenderer::new); } @Override diff --git a/commonmark-ext-task-list-items/src/main/java/org/commonmark/ext/task/list/items/TaskListItemsExtension.java b/commonmark-ext-task-list-items/src/main/java/org/commonmark/ext/task/list/items/TaskListItemsExtension.java index 9bf0a2155..873aacdfd 100644 --- a/commonmark-ext-task-list-items/src/main/java/org/commonmark/ext/task/list/items/TaskListItemsExtension.java +++ b/commonmark-ext-task-list-items/src/main/java/org/commonmark/ext/task/list/items/TaskListItemsExtension.java @@ -35,11 +35,6 @@ public void extend(Parser.Builder parserBuilder) { @Override public void extend(HtmlRenderer.Builder rendererBuilder) { - rendererBuilder.nodeRendererFactory(new HtmlNodeRendererFactory() { - @Override - public NodeRenderer create(HtmlNodeRendererContext context) { - return new TaskListItemHtmlNodeRenderer(context); - } - }); + rendererBuilder.nodeRendererFactory(TaskListItemHtmlNodeRenderer::new); } } diff --git a/commonmark/src/main/java/org/commonmark/renderer/html/HtmlRenderer.java b/commonmark/src/main/java/org/commonmark/renderer/html/HtmlRenderer.java index 386abebf0..6c3122421 100644 --- a/commonmark/src/main/java/org/commonmark/renderer/html/HtmlRenderer.java +++ b/commonmark/src/main/java/org/commonmark/renderer/html/HtmlRenderer.java @@ -41,12 +41,7 @@ private HtmlRenderer(Builder builder) { this.nodeRendererFactories = new ArrayList<>(builder.nodeRendererFactories.size() + 1); this.nodeRendererFactories.addAll(builder.nodeRendererFactories); // Add as last. This means clients can override the rendering of core nodes if they want. - this.nodeRendererFactories.add(new HtmlNodeRendererFactory() { - @Override - public NodeRenderer create(HtmlNodeRendererContext context) { - return new CoreHtmlNodeRenderer(context); - } - }); + this.nodeRendererFactories.add(CoreHtmlNodeRenderer::new); } /** diff --git a/commonmark/src/main/java/org/commonmark/renderer/text/TextContentRenderer.java b/commonmark/src/main/java/org/commonmark/renderer/text/TextContentRenderer.java index d64d0c7ef..572fceda8 100644 --- a/commonmark/src/main/java/org/commonmark/renderer/text/TextContentRenderer.java +++ b/commonmark/src/main/java/org/commonmark/renderer/text/TextContentRenderer.java @@ -24,12 +24,7 @@ private TextContentRenderer(Builder builder) { this.nodeRendererFactories = new ArrayList<>(builder.nodeRendererFactories.size() + 1); this.nodeRendererFactories.addAll(builder.nodeRendererFactories); // Add as last. This means clients can override the rendering of core nodes if they want. - this.nodeRendererFactories.add(new TextContentNodeRendererFactory() { - @Override - public NodeRenderer create(TextContentNodeRendererContext context) { - return new CoreTextContentNodeRenderer(context); - } - }); + this.nodeRendererFactories.add(CoreTextContentNodeRenderer::new); } /** diff --git a/commonmark/src/test/java/org/commonmark/test/SourceSpanRenderer.java b/commonmark/src/test/java/org/commonmark/test/SourceSpanRenderer.java index c29aac61e..597a1e31c 100644 --- a/commonmark/src/test/java/org/commonmark/test/SourceSpanRenderer.java +++ b/commonmark/src/test/java/org/commonmark/test/SourceSpanRenderer.java @@ -43,7 +43,7 @@ public static String renderWithInputIndex(Node document, String source) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < source.length(); i++) { - markers.getOrDefault(i, List.of()).forEach(marker -> sb.append(marker)); + markers.getOrDefault(i, List.of()).forEach(sb::append); sb.append(source.charAt(i)); } return sb.toString(); diff --git a/commonmark/src/test/java/org/commonmark/test/UsageExampleTest.java b/commonmark/src/test/java/org/commonmark/test/UsageExampleTest.java index 20cd9f5ab..6f88d4990 100644 --- a/commonmark/src/test/java/org/commonmark/test/UsageExampleTest.java +++ b/commonmark/src/test/java/org/commonmark/test/UsageExampleTest.java @@ -94,12 +94,7 @@ public AttributeProvider create(AttributeProviderContext context) { public void customizeRendering() { Parser parser = Parser.builder().build(); HtmlRenderer renderer = HtmlRenderer.builder() - .nodeRendererFactory(new HtmlNodeRendererFactory() { - @Override - public NodeRenderer create(HtmlNodeRendererContext context) { - return new IndentedCodeBlockNodeRenderer(context); - } - }) + .nodeRendererFactory(IndentedCodeBlockNodeRenderer::new) .build(); Node document = parser.parse("Example:\n\n code"); From 6d1112237813f51678b4aab599e44625838ab08b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jari-Matti=20M=C3=A4kel=C3=A4?= Date: Wed, 1 Apr 2026 18:20:20 +0300 Subject: [PATCH 04/13] Replace anonymous classes with lambdas --- .../ext/gfm/alerts/AlertsExtension.java | 7 +- .../commonmark/ext/gfm/tables/TablesTest.java | 44 ++++------ .../anchor/HeadingAnchorExtension.java | 7 +- .../attributes/ImageAttributesExtension.java | 7 +- .../java/org/commonmark/ui/DingusApp.java | 7 +- .../commonmark/internal/util/Escaping.java | 46 +++++------ .../org/commonmark/test/HtmlRendererTest.java | 80 +++++++------------ .../java/org/commonmark/test/ParserTest.java | 15 +--- .../org/commonmark/test/UsageExampleTest.java | 7 +- 9 files changed, 68 insertions(+), 152 deletions(-) diff --git a/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/AlertsExtension.java b/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/AlertsExtension.java index 3990034d2..16c36b221 100644 --- a/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/AlertsExtension.java +++ b/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/AlertsExtension.java @@ -55,12 +55,7 @@ public void extend(Parser.Builder parserBuilder) { @Override public void extend(HtmlRenderer.Builder rendererBuilder) { - rendererBuilder.nodeRendererFactory(new HtmlNodeRendererFactory() { - @Override - public NodeRenderer create(HtmlNodeRendererContext context) { - return new AlertHtmlNodeRenderer(context, customTypes); - } - }); + rendererBuilder.nodeRendererFactory(context -> new AlertHtmlNodeRenderer(context, customTypes)); } @Override diff --git a/commonmark-ext-gfm-tables/src/test/java/org/commonmark/ext/gfm/tables/TablesTest.java b/commonmark-ext-gfm-tables/src/test/java/org/commonmark/ext/gfm/tables/TablesTest.java index 3f4b37d54..8d04d175e 100644 --- a/commonmark-ext-gfm-tables/src/test/java/org/commonmark/ext/gfm/tables/TablesTest.java +++ b/commonmark-ext-gfm-tables/src/test/java/org/commonmark/ext/gfm/tables/TablesTest.java @@ -718,25 +718,17 @@ public void interruptsParagraph() { @Test public void attributeProviderIsApplied() { - AttributeProviderFactory factory = new AttributeProviderFactory() { - @Override - public AttributeProvider create(AttributeProviderContext context) { - return new AttributeProvider() { - @Override - public void setAttributes(Node node, String tagName, Map attributes) { - if (node instanceof TableBlock) { - attributes.put("test", "block"); - } else if (node instanceof TableHead) { - attributes.put("test", "head"); - } else if (node instanceof TableBody) { - attributes.put("test", "body"); - } else if (node instanceof TableRow) { - attributes.put("test", "row"); - } else if (node instanceof TableCell) { - attributes.put("test", "cell"); - } - } - }; + AttributeProviderFactory factory = context -> (node, tagName, attributes) -> { + if (node instanceof TableBlock) { + attributes.put("test", "block"); + } else if (node instanceof TableHead) { + attributes.put("test", "head"); + } else if (node instanceof TableBody) { + attributes.put("test", "body"); + } else if (node instanceof TableRow) { + attributes.put("test", "row"); + } else if (node instanceof TableCell) { + attributes.put("test", "cell"); } }; HtmlRenderer renderer = HtmlRenderer.builder() @@ -762,17 +754,9 @@ public void setAttributes(Node node, String tagName, Map attribu @Test public void columnWidthIsRecorded() { - AttributeProviderFactory factory = new AttributeProviderFactory() { - @Override - public AttributeProvider create(AttributeProviderContext context) { - return new AttributeProvider() { - @Override - public void setAttributes(Node node, String tagName, Map attributes) { - if (node instanceof TableCell && "th".equals(tagName)) { - attributes.put("width", ((TableCell) node).getWidth() + "em"); - } - } - }; + AttributeProviderFactory factory = context -> (node, tagName, attributes) -> { + if (node instanceof TableCell && "th".equals(tagName)) { + attributes.put("width", ((TableCell) node).getWidth() + "em"); } }; HtmlRenderer renderer = HtmlRenderer.builder() diff --git a/commonmark-ext-heading-anchor/src/main/java/org/commonmark/ext/heading/anchor/HeadingAnchorExtension.java b/commonmark-ext-heading-anchor/src/main/java/org/commonmark/ext/heading/anchor/HeadingAnchorExtension.java index cee414da2..970aeda99 100644 --- a/commonmark-ext-heading-anchor/src/main/java/org/commonmark/ext/heading/anchor/HeadingAnchorExtension.java +++ b/commonmark-ext-heading-anchor/src/main/java/org/commonmark/ext/heading/anchor/HeadingAnchorExtension.java @@ -55,12 +55,7 @@ public static Builder builder() { @Override public void extend(HtmlRenderer.Builder rendererBuilder) { - rendererBuilder.attributeProviderFactory(new AttributeProviderFactory() { - @Override - public AttributeProvider create(AttributeProviderContext context) { - return HeadingIdAttributeProvider.create(defaultId, idPrefix, idSuffix); - } - }); + rendererBuilder.attributeProviderFactory(context -> HeadingIdAttributeProvider.create(defaultId, idPrefix, idSuffix)); } public static class Builder { diff --git a/commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/ImageAttributesExtension.java b/commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/ImageAttributesExtension.java index 28c6abab2..20d8aa86d 100644 --- a/commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/ImageAttributesExtension.java +++ b/commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/ImageAttributesExtension.java @@ -35,11 +35,6 @@ public void extend(Parser.Builder parserBuilder) { @Override public void extend(HtmlRenderer.Builder rendererBuilder) { - rendererBuilder.attributeProviderFactory(new AttributeProviderFactory() { - @Override - public AttributeProvider create(AttributeProviderContext context) { - return ImageAttributesAttributeProvider.create(); - } - }); + rendererBuilder.attributeProviderFactory(context -> ImageAttributesAttributeProvider.create()); } } diff --git a/commonmark-integration-test/src/test/java/org/commonmark/ui/DingusApp.java b/commonmark-integration-test/src/test/java/org/commonmark/ui/DingusApp.java index 0e98386bb..b6564920f 100644 --- a/commonmark-integration-test/src/test/java/org/commonmark/ui/DingusApp.java +++ b/commonmark-integration-test/src/test/java/org/commonmark/ui/DingusApp.java @@ -79,12 +79,7 @@ public void changedUpdate(DocumentEvent e) { tabbedPane.addTab("HTML source", htmlSourceRendererOutput); tabbedPane.addTab("Plain text", textRendererOutput); - tabbedPane.addChangeListener(new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - updateOutput(input.getText()); - } - }); + tabbedPane.addChangeListener(e -> updateOutput(input.getText())); input.setText("# Example\n" + "Enter text *here* and see how it renders on the right.\n\n" + diff --git a/commonmark/src/main/java/org/commonmark/internal/util/Escaping.java b/commonmark/src/main/java/org/commonmark/internal/util/Escaping.java index 3350003c0..1c96bc00c 100644 --- a/commonmark/src/main/java/org/commonmark/internal/util/Escaping.java +++ b/commonmark/src/main/java/org/commonmark/internal/util/Escaping.java @@ -25,36 +25,30 @@ public class Escaping { private static final Pattern WHITESPACE = Pattern.compile("[ \t\r\n]+"); - private static final Replacer UNESCAPE_REPLACER = new Replacer() { - @Override - public void replace(String input, StringBuilder sb) { - if (input.charAt(0) == '\\') { - sb.append(input, 1, input.length()); - } else { - sb.append(Html5Entities.entityToString(input)); - } + private static final Replacer UNESCAPE_REPLACER = (input, sb) -> { + if (input.charAt(0) == '\\') { + sb.append(input, 1, input.length()); + } else { + sb.append(Html5Entities.entityToString(input)); } }; - private static final Replacer URI_REPLACER = new Replacer() { - @Override - public void replace(String input, StringBuilder sb) { - if (input.startsWith("%")) { - if (input.length() == 3) { - // Already percent-encoded, preserve - sb.append(input); - } else { - // %25 is the percent-encoding for % - sb.append("%25"); - sb.append(input, 1, input.length()); - } + private static final Replacer URI_REPLACER = (input, sb) -> { + if (input.startsWith("%")) { + if (input.length() == 3) { + // Already percent-encoded, preserve + sb.append(input); } else { - byte[] bytes = input.getBytes(StandardCharsets.UTF_8); - for (byte b : bytes) { - sb.append('%'); - sb.append(HEX_DIGITS[(b >> 4) & 0xF]); - sb.append(HEX_DIGITS[b & 0xF]); - } + // %25 is the percent-encoding for % + sb.append("%25"); + sb.append(input, 1, input.length()); + } + } else { + byte[] bytes = input.getBytes(StandardCharsets.UTF_8); + for (byte b : bytes) { + sb.append('%'); + sb.append(HEX_DIGITS[(b >> 4) & 0xF]); + sb.append(HEX_DIGITS[b & 0xF]); } } }; diff --git a/commonmark/src/test/java/org/commonmark/test/HtmlRendererTest.java b/commonmark/src/test/java/org/commonmark/test/HtmlRendererTest.java index 02d970949..92751147a 100644 --- a/commonmark/src/test/java/org/commonmark/test/HtmlRendererTest.java +++ b/commonmark/src/test/java/org/commonmark/test/HtmlRendererTest.java @@ -162,23 +162,15 @@ public void percentEncodeUrl() { @Test public void attributeProviderForCodeBlock() { - AttributeProviderFactory custom = new AttributeProviderFactory() { - @Override - public AttributeProvider create(AttributeProviderContext context) { - return new AttributeProvider() { - @Override - public void setAttributes(Node node, String tagName, Map attributes) { - if (node instanceof FencedCodeBlock && tagName.equals("code")) { - FencedCodeBlock fencedCodeBlock = (FencedCodeBlock) node; - // Remove the default attribute for info - attributes.remove("class"); - // Put info in custom attribute instead - attributes.put("data-custom", fencedCodeBlock.getInfo()); - } else if (node instanceof FencedCodeBlock && tagName.equals("pre")) { - attributes.put("data-code-block", "fenced"); - } - } - }; + AttributeProviderFactory custom = context -> (node, tagName, attributes) -> { + if (node instanceof FencedCodeBlock && tagName.equals("code")) { + FencedCodeBlock fencedCodeBlock = (FencedCodeBlock) node; + // Remove the default attribute for info + attributes.remove("class"); + // Put info in custom attribute instead + attributes.put("data-custom", fencedCodeBlock.getInfo()); + } else if (node instanceof FencedCodeBlock && tagName.equals("pre")) { + attributes.put("data-code-block", "fenced"); } }; @@ -192,18 +184,10 @@ public void setAttributes(Node node, String tagName, Map attribu @Test public void attributeProviderForImage() { - AttributeProviderFactory custom = new AttributeProviderFactory() { - @Override - public AttributeProvider create(AttributeProviderContext context) { - return new AttributeProvider() { - @Override - public void setAttributes(Node node, String tagName, Map attributes) { - if (node instanceof Image) { - attributes.remove("alt"); - attributes.put("test", "hey"); - } - } - }; + AttributeProviderFactory custom = context -> (node, tagName, attributes) -> { + if (node instanceof Image) { + attributes.remove("alt"); + attributes.put("test", "hey"); } }; @@ -214,18 +198,13 @@ public void setAttributes(Node node, String tagName, Map attribu @Test public void attributeProviderFactoryNewInstanceForEachRender() { - AttributeProviderFactory factory = new AttributeProviderFactory() { + AttributeProviderFactory factory = context -> new AttributeProvider() { + int i = 0; + @Override - public AttributeProvider create(AttributeProviderContext context) { - return new AttributeProvider() { - int i = 0; - - @Override - public void setAttributes(Node node, String tagName, Map attributes) { - attributes.put("key", "" + i); - i++; - } - }; + public void setAttributes(Node node, String tagName, Map attributes) { + attributes.put("key", "" + i); + i++; } }; @@ -237,20 +216,15 @@ public void setAttributes(Node node, String tagName, Map attribu @Test public void overrideNodeRender() { - HtmlNodeRendererFactory nodeRendererFactory = new HtmlNodeRendererFactory() { + HtmlNodeRendererFactory nodeRendererFactory = context -> new NodeRenderer() { + @Override + public Set> getNodeTypes() { + return Set.of(Link.class); + } + @Override - public NodeRenderer create(final HtmlNodeRendererContext context) { - return new NodeRenderer() { - @Override - public Set> getNodeTypes() { - return Set.of(Link.class); - } - - @Override - public void render(Node node) { - context.getWriter().text("test"); - } - }; + public void render(Node node) { + context.getWriter().text("test"); } }; diff --git a/commonmark/src/test/java/org/commonmark/test/ParserTest.java b/commonmark/src/test/java/org/commonmark/test/ParserTest.java index 337196c56..82eb1c82d 100644 --- a/commonmark/src/test/java/org/commonmark/test/ParserTest.java +++ b/commonmark/src/test/java/org/commonmark/test/ParserTest.java @@ -90,20 +90,9 @@ public void indentation() { @Test public void inlineParser() { - final InlineParser fakeInlineParser = new InlineParser() { - @Override - public void parse(SourceLines lines, Node node) { - node.appendChild(new ThematicBreak()); - } - }; - - InlineParserFactory fakeInlineParserFactory = new InlineParserFactory() { + final InlineParser fakeInlineParser = (lines, node) -> node.appendChild(new ThematicBreak()); - @Override - public InlineParser create(InlineParserContext inlineParserContext) { - return fakeInlineParser; - } - }; + InlineParserFactory fakeInlineParserFactory = inlineParserContext -> fakeInlineParser; Parser parser = Parser.builder().inlineParserFactory(fakeInlineParserFactory).build(); String input = "**bold** **bold** ~~strikethrough~~"; diff --git a/commonmark/src/test/java/org/commonmark/test/UsageExampleTest.java b/commonmark/src/test/java/org/commonmark/test/UsageExampleTest.java index 6f88d4990..97ac8990e 100644 --- a/commonmark/src/test/java/org/commonmark/test/UsageExampleTest.java +++ b/commonmark/src/test/java/org/commonmark/test/UsageExampleTest.java @@ -78,12 +78,7 @@ public void sourcePositions() { public void addAttributes() { Parser parser = Parser.builder().build(); HtmlRenderer renderer = HtmlRenderer.builder() - .attributeProviderFactory(new AttributeProviderFactory() { - @Override - public AttributeProvider create(AttributeProviderContext context) { - return new ImageAttributeProvider(); - } - }) + .attributeProviderFactory(context -> new ImageAttributeProvider()) .build(); Node document = parser.parse("![text](/url.png)"); From 8a87d5b1286565e1fe96a727959201b7f5036ed6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jari-Matti=20M=C3=A4kel=C3=A4?= Date: Wed, 1 Apr 2026 18:21:35 +0300 Subject: [PATCH 05/13] Add explicit static keyword for nested classes that do not depend on outer context --- .../src/test/java/org/commonmark/test/UsageExampleTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/commonmark/src/test/java/org/commonmark/test/UsageExampleTest.java b/commonmark/src/test/java/org/commonmark/test/UsageExampleTest.java index 97ac8990e..1a3625848 100644 --- a/commonmark/src/test/java/org/commonmark/test/UsageExampleTest.java +++ b/commonmark/src/test/java/org/commonmark/test/UsageExampleTest.java @@ -96,7 +96,7 @@ public void customizeRendering() { assertThat(renderer.render(document)).isEqualTo("

Example:

\n
code\n
\n"); } - class WordCountVisitor extends AbstractVisitor { + static class WordCountVisitor extends AbstractVisitor { int wordCount = 0; @@ -112,7 +112,7 @@ public void visit(Text text) { } } - class ImageAttributeProvider implements AttributeProvider { + static class ImageAttributeProvider implements AttributeProvider { @Override public void setAttributes(Node node, String tagName, Map attributes) { if (node instanceof Image) { @@ -121,7 +121,7 @@ public void setAttributes(Node node, String tagName, Map attribu } } - class IndentedCodeBlockNodeRenderer implements NodeRenderer { + static class IndentedCodeBlockNodeRenderer implements NodeRenderer { private final HtmlWriter html; From 867e58c611708cf7e731b0d421289b8eadcf85f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jari-Matti=20M=C3=A4kel=C3=A4?= Date: Wed, 1 Apr 2026 18:22:20 +0300 Subject: [PATCH 06/13] Refactor bulk collection operations --- .../attributes/internal/ImageAttributesAttributeProvider.java | 4 +--- .../src/main/java/org/commonmark/internal/DocumentParser.java | 3 +-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/internal/ImageAttributesAttributeProvider.java b/commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/internal/ImageAttributesAttributeProvider.java index edd9c4692..bd89738de 100644 --- a/commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/internal/ImageAttributesAttributeProvider.java +++ b/commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/internal/ImageAttributesAttributeProvider.java @@ -26,9 +26,7 @@ public void setAttributes(Node node, String tagName, final Map a public void visit(CustomNode node) { if (node instanceof ImageAttributes) { ImageAttributes imageAttributes = (ImageAttributes) node; - for (Map.Entry entry : imageAttributes.getAttributes().entrySet()) { - attributes.put(entry.getKey(), entry.getValue()); - } + attributes.putAll(imageAttributes.getAttributes()); // Now that we have used the image attributes we remove the node. imageAttributes.unlink(); } diff --git a/commonmark/src/main/java/org/commonmark/internal/DocumentParser.java b/commonmark/src/main/java/org/commonmark/internal/DocumentParser.java index 07d97296b..17e7b9c84 100644 --- a/commonmark/src/main/java/org/commonmark/internal/DocumentParser.java +++ b/commonmark/src/main/java/org/commonmark/internal/DocumentParser.java @@ -105,9 +105,8 @@ public static Set> getDefaultBlockParserTypes() { } public static List calculateBlockParserFactories(List customBlockParserFactories, Set> enabledBlockTypes) { - List list = new ArrayList<>(); // By having the custom factories come first, extensions are able to change behavior of core syntax. - list.addAll(customBlockParserFactories); + List list = new ArrayList<>(customBlockParserFactories); for (Class blockType : enabledBlockTypes) { list.add(NODES_TO_CORE_FACTORIES.get(blockType)); } From 538286d1bbea36299f0af6d94fe21ffb9ff92958 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jari-Matti=20M=C3=A4kel=C3=A4?= Date: Wed, 1 Apr 2026 18:23:53 +0300 Subject: [PATCH 07/13] Refactor API calls to use Map.of (Java 9+) and List.copyOf (Java 10+) --- .../java/org/commonmark/internal/DocumentParser.java | 10 +--------- .../internal/LinkReferenceDefinitionParser.java | 3 +-- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/commonmark/src/main/java/org/commonmark/internal/DocumentParser.java b/commonmark/src/main/java/org/commonmark/internal/DocumentParser.java index 17e7b9c84..2f20391bc 100644 --- a/commonmark/src/main/java/org/commonmark/internal/DocumentParser.java +++ b/commonmark/src/main/java/org/commonmark/internal/DocumentParser.java @@ -31,15 +31,7 @@ public class DocumentParser implements ParserState { private static final Map, BlockParserFactory> NODES_TO_CORE_FACTORIES; static { - Map, BlockParserFactory> map = new HashMap<>(); - map.put(BlockQuote.class, new BlockQuoteParser.Factory()); - map.put(Heading.class, new HeadingParser.Factory()); - map.put(FencedCodeBlock.class, new FencedCodeBlockParser.Factory()); - map.put(HtmlBlock.class, new HtmlBlockParser.Factory()); - map.put(ThematicBreak.class, new ThematicBreakParser.Factory()); - map.put(ListBlock.class, new ListBlockParser.Factory()); - map.put(IndentedCodeBlock.class, new IndentedCodeBlockParser.Factory()); - NODES_TO_CORE_FACTORIES = Collections.unmodifiableMap(map); + NODES_TO_CORE_FACTORIES = Map.of(BlockQuote.class, new BlockQuoteParser.Factory(), Heading.class, new HeadingParser.Factory(), FencedCodeBlock.class, new FencedCodeBlockParser.Factory(), HtmlBlock.class, new HtmlBlockParser.Factory(), ThematicBreak.class, new ThematicBreakParser.Factory(), ListBlock.class, new ListBlockParser.Factory(), IndentedCodeBlock.class, new IndentedCodeBlockParser.Factory()); } private SourceLine line; diff --git a/commonmark/src/main/java/org/commonmark/internal/LinkReferenceDefinitionParser.java b/commonmark/src/main/java/org/commonmark/internal/LinkReferenceDefinitionParser.java index 637d3b111..5b96cf451 100644 --- a/commonmark/src/main/java/org/commonmark/internal/LinkReferenceDefinitionParser.java +++ b/commonmark/src/main/java/org/commonmark/internal/LinkReferenceDefinitionParser.java @@ -104,8 +104,7 @@ State getState() { } List removeLines(int lines) { - var removedSpans = Collections.unmodifiableList(new ArrayList<>( - sourceSpans.subList(Math.max(sourceSpans.size() - lines, 0), sourceSpans.size()))); + var removedSpans = List.copyOf(sourceSpans.subList(Math.max(sourceSpans.size() - lines, 0), sourceSpans.size())); removeLast(lines, paragraphLines); removeLast(lines, sourceSpans); return removedSpans; From 298a132148eade595a54a6a66a36b077c1827d95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jari-Matti=20M=C3=A4kel=C3=A4?= Date: Wed, 1 Apr 2026 18:25:17 +0300 Subject: [PATCH 08/13] Refactor to use String.isEmpty --- .../commonmark/renderer/text/CoreTextContentNodeRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commonmark/src/main/java/org/commonmark/renderer/text/CoreTextContentNodeRenderer.java b/commonmark/src/main/java/org/commonmark/renderer/text/CoreTextContentNodeRenderer.java index ee564cbdb..62a1a054d 100644 --- a/commonmark/src/main/java/org/commonmark/renderer/text/CoreTextContentNodeRenderer.java +++ b/commonmark/src/main/java/org/commonmark/renderer/text/CoreTextContentNodeRenderer.java @@ -236,7 +236,7 @@ private void writeText(String text) { private void writeLink(Node node, String title, String destination) { boolean hasChild = node.getFirstChild() != null; boolean hasTitle = title != null && !title.equals(destination); - boolean hasDestination = destination != null && !destination.equals(""); + boolean hasDestination = destination != null && !destination.isEmpty(); if (hasChild) { textContent.write('"'); From b23ac6cf7b0a76debf732ae3207345574e1018a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jari-Matti=20M=C3=A4kel=C3=A4?= Date: Wed, 1 Apr 2026 18:27:21 +0300 Subject: [PATCH 09/13] Remove redundant label and escape --- .../src/main/java/org/commonmark/internal/util/Escaping.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/commonmark/src/main/java/org/commonmark/internal/util/Escaping.java b/commonmark/src/main/java/org/commonmark/internal/util/Escaping.java index 1c96bc00c..caf802a43 100644 --- a/commonmark/src/main/java/org/commonmark/internal/util/Escaping.java +++ b/commonmark/src/main/java/org/commonmark/internal/util/Escaping.java @@ -7,7 +7,7 @@ public class Escaping { - public static final String ESCAPABLE = "[!\"#$%&\'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~-]"; + public static final String ESCAPABLE = "[!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~-]"; public static final String ENTITY = "&(?:#x[a-f0-9]{1,6}|#[0-9]{1,7}|[a-z][a-z0-9]{1,31});"; @@ -57,7 +57,6 @@ public static String escapeHtml(String input) { // Avoid building a new string in the majority of cases (nothing to escape) StringBuilder sb = null; - loop: for (int i = 0; i < input.length(); i++) { char c = input.charAt(i); String replacement; @@ -78,7 +77,7 @@ public static String escapeHtml(String input) { if (sb != null) { sb.append(c); } - continue loop; + continue; } if (sb == null) { sb = new StringBuilder(); From 2d413e9d020399511124e081e87e99384818e37d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jari-Matti=20M=C3=A4kel=C3=A4?= Date: Wed, 1 Apr 2026 18:28:04 +0300 Subject: [PATCH 10/13] Refactor String API calls --- .../commonmark/ext/gfm/tables/internal/TableBlockParser.java | 2 +- .../java/org/commonmark/ext/heading/anchor/IdGenerator.java | 2 +- .../attributes/internal/ImageAttributesDelimiterProcessor.java | 2 +- .../main/java/org/commonmark/internal/util/Html5Entities.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/internal/TableBlockParser.java b/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/internal/TableBlockParser.java index 57af128d8..49f17194d 100644 --- a/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/internal/TableBlockParser.java +++ b/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/internal/TableBlockParser.java @@ -274,7 +274,7 @@ public static class Factory extends AbstractBlockParserFactory { @Override public BlockStart tryStart(ParserState state, MatchedBlockParser matchedBlockParser) { List paragraphLines = matchedBlockParser.getParagraphLines().getLines(); - if (paragraphLines.size() >= 1 && Characters.find('|', paragraphLines.get(paragraphLines.size() - 1).getContent(), 0) != -1) { + if (!paragraphLines.isEmpty() && Characters.find('|', paragraphLines.get(paragraphLines.size() - 1).getContent(), 0) != -1) { SourceLine line = state.getLine(); SourceLine separatorLine = line.substring(state.getIndex(), line.getContent().length()); List columns = parseSeparator(separatorLine.getContent()); diff --git a/commonmark-ext-heading-anchor/src/main/java/org/commonmark/ext/heading/anchor/IdGenerator.java b/commonmark-ext-heading-anchor/src/main/java/org/commonmark/ext/heading/anchor/IdGenerator.java index 6eb85b6c1..2c37433e2 100644 --- a/commonmark-ext-heading-anchor/src/main/java/org/commonmark/ext/heading/anchor/IdGenerator.java +++ b/commonmark-ext-heading-anchor/src/main/java/org/commonmark/ext/heading/anchor/IdGenerator.java @@ -66,7 +66,7 @@ public static Builder builder() { public String generateId(String text) { String normalizedIdentity = text != null ? normalizeText(text) : defaultIdentifier; - if (normalizedIdentity.length() == 0) { + if (normalizedIdentity.isEmpty()) { normalizedIdentity = defaultIdentifier; } diff --git a/commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/internal/ImageAttributesDelimiterProcessor.java b/commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/internal/ImageAttributesDelimiterProcessor.java index a335ccadc..06a39ba23 100644 --- a/commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/internal/ImageAttributesDelimiterProcessor.java +++ b/commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/internal/ImageAttributesDelimiterProcessor.java @@ -75,7 +75,7 @@ public int process(DelimiterRun openingRun, DelimiterRun closingRun) { node.unlink(); } - if (attributesMap.size() > 0) { + if (!attributesMap.isEmpty()) { ImageAttributes imageAttributes = new ImageAttributes(attributesMap); // The new node is added as a child of the image node to which the attributes apply. diff --git a/commonmark/src/main/java/org/commonmark/internal/util/Html5Entities.java b/commonmark/src/main/java/org/commonmark/internal/util/Html5Entities.java index 8da53c053..d6034ff14 100644 --- a/commonmark/src/main/java/org/commonmark/internal/util/Html5Entities.java +++ b/commonmark/src/main/java/org/commonmark/internal/util/Html5Entities.java @@ -54,7 +54,7 @@ private static Map readEntities() { try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream, charset))) { String line; while ((line = bufferedReader.readLine()) != null) { - if (line.length() == 0) { + if (line.isEmpty()) { continue; } int equal = line.indexOf("="); From e2b2130862c8a71c675ceb66205bed374eb564e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jari-Matti=20M=C3=A4kel=C3=A4?= Date: Wed, 1 Apr 2026 18:28:15 +0300 Subject: [PATCH 11/13] Refactor conditional --- commonmark/src/main/java/org/commonmark/node/Node.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/commonmark/src/main/java/org/commonmark/node/Node.java b/commonmark/src/main/java/org/commonmark/node/Node.java index d95a72c60..abbda67f2 100644 --- a/commonmark/src/main/java/org/commonmark/node/Node.java +++ b/commonmark/src/main/java/org/commonmark/node/Node.java @@ -50,11 +50,10 @@ public void appendChild(Node child) { if (this.lastChild != null) { this.lastChild.next = child; child.prev = this.lastChild; - this.lastChild = child; } else { this.firstChild = child; - this.lastChild = child; } + this.lastChild = child; } public void prependChild(Node child) { From da2179aadc9fb0169a77b3459756b12748eb5085 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jari-Matti=20M=C3=A4kel=C3=A4?= Date: Wed, 1 Apr 2026 18:28:47 +0300 Subject: [PATCH 12/13] Remove redundant imports --- .../org/commonmark/ext/gfm/alerts/AlertsExtension.java | 2 -- .../ext/gfm/strikethrough/StrikethroughExtension.java | 4 ---- .../org/commonmark/ext/gfm/tables/TablesExtension.java | 4 ---- .../java/org/commonmark/ext/gfm/tables/TablesTest.java | 3 --- .../ext/heading/anchor/HeadingAnchorExtension.java | 3 --- .../ext/image/attributes/ImageAttributesExtension.java | 3 --- .../main/java/org/commonmark/ext/ins/InsExtension.java | 4 ---- .../ext/task/list/items/TaskListItemsExtension.java | 3 --- .../integration/MarkdownRendererIntegrationTest.java | 10 ---------- .../integration/SourceSpanIntegrationTest.java | 1 - .../commonmark/integration/SpecIntegrationTest.java | 1 - .../src/test/java/org/commonmark/ui/DingusApp.java | 2 -- .../org/commonmark/testutil/RenderingTestCase.java | 2 -- .../java/org/commonmark/testutil/SpecTestCase.java | 2 -- .../internal/LinkReferenceDefinitionParser.java | 1 - .../org/commonmark/renderer/html/HtmlRenderer.java | 1 - .../commonmark/renderer/text/TextContentRenderer.java | 1 - .../src/test/java/org/commonmark/test/ParserTest.java | 1 - .../test/java/org/commonmark/test/SpecCoreTest.java | 1 - .../java/org/commonmark/test/SpecCrLfCoreTest.java | 1 - 20 files changed, 50 deletions(-) diff --git a/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/AlertsExtension.java b/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/AlertsExtension.java index 16c36b221..b9a449854 100644 --- a/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/AlertsExtension.java +++ b/commonmark-ext-gfm-alerts/src/main/java/org/commonmark/ext/gfm/alerts/AlertsExtension.java @@ -6,8 +6,6 @@ import org.commonmark.ext.gfm.alerts.internal.AlertMarkdownNodeRenderer; import org.commonmark.parser.Parser; import org.commonmark.renderer.NodeRenderer; -import org.commonmark.renderer.html.HtmlNodeRendererContext; -import org.commonmark.renderer.html.HtmlNodeRendererFactory; import org.commonmark.renderer.html.HtmlRenderer; import org.commonmark.renderer.markdown.MarkdownNodeRendererContext; import org.commonmark.renderer.markdown.MarkdownNodeRendererFactory; diff --git a/commonmark-ext-gfm-strikethrough/src/main/java/org/commonmark/ext/gfm/strikethrough/StrikethroughExtension.java b/commonmark-ext-gfm-strikethrough/src/main/java/org/commonmark/ext/gfm/strikethrough/StrikethroughExtension.java index 3f5988f00..0571aed84 100644 --- a/commonmark-ext-gfm-strikethrough/src/main/java/org/commonmark/ext/gfm/strikethrough/StrikethroughExtension.java +++ b/commonmark-ext-gfm-strikethrough/src/main/java/org/commonmark/ext/gfm/strikethrough/StrikethroughExtension.java @@ -7,14 +7,10 @@ import org.commonmark.ext.gfm.strikethrough.internal.StrikethroughTextContentNodeRenderer; import org.commonmark.parser.Parser; import org.commonmark.renderer.NodeRenderer; -import org.commonmark.renderer.html.HtmlNodeRendererContext; -import org.commonmark.renderer.html.HtmlNodeRendererFactory; import org.commonmark.renderer.html.HtmlRenderer; import org.commonmark.renderer.markdown.MarkdownNodeRendererContext; import org.commonmark.renderer.markdown.MarkdownNodeRendererFactory; import org.commonmark.renderer.markdown.MarkdownRenderer; -import org.commonmark.renderer.text.TextContentNodeRendererContext; -import org.commonmark.renderer.text.TextContentNodeRendererFactory; import org.commonmark.renderer.text.TextContentRenderer; import java.util.Set; diff --git a/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/TablesExtension.java b/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/TablesExtension.java index b49b9dab4..4740e9aad 100644 --- a/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/TablesExtension.java +++ b/commonmark-ext-gfm-tables/src/main/java/org/commonmark/ext/gfm/tables/TablesExtension.java @@ -7,14 +7,10 @@ import org.commonmark.ext.gfm.tables.internal.TableTextContentNodeRenderer; import org.commonmark.parser.Parser; import org.commonmark.renderer.NodeRenderer; -import org.commonmark.renderer.html.HtmlNodeRendererContext; -import org.commonmark.renderer.html.HtmlNodeRendererFactory; import org.commonmark.renderer.html.HtmlRenderer; import org.commonmark.renderer.markdown.MarkdownNodeRendererContext; import org.commonmark.renderer.markdown.MarkdownNodeRendererFactory; import org.commonmark.renderer.markdown.MarkdownRenderer; -import org.commonmark.renderer.text.TextContentNodeRendererContext; -import org.commonmark.renderer.text.TextContentNodeRendererFactory; import org.commonmark.renderer.text.TextContentRenderer; import java.util.Set; diff --git a/commonmark-ext-gfm-tables/src/test/java/org/commonmark/ext/gfm/tables/TablesTest.java b/commonmark-ext-gfm-tables/src/test/java/org/commonmark/ext/gfm/tables/TablesTest.java index 8d04d175e..98c3ad4d7 100644 --- a/commonmark-ext-gfm-tables/src/test/java/org/commonmark/ext/gfm/tables/TablesTest.java +++ b/commonmark-ext-gfm-tables/src/test/java/org/commonmark/ext/gfm/tables/TablesTest.java @@ -4,15 +4,12 @@ import org.commonmark.node.*; import org.commonmark.parser.IncludeSourceSpans; import org.commonmark.parser.Parser; -import org.commonmark.renderer.html.AttributeProvider; -import org.commonmark.renderer.html.AttributeProviderContext; import org.commonmark.renderer.html.AttributeProviderFactory; import org.commonmark.renderer.html.HtmlRenderer; import org.commonmark.testutil.RenderingTestCase; import org.junit.jupiter.api.Test; import java.util.List; -import java.util.Map; import java.util.Set; import static org.assertj.core.api.Assertions.assertThat; diff --git a/commonmark-ext-heading-anchor/src/main/java/org/commonmark/ext/heading/anchor/HeadingAnchorExtension.java b/commonmark-ext-heading-anchor/src/main/java/org/commonmark/ext/heading/anchor/HeadingAnchorExtension.java index 970aeda99..5921f3c5b 100644 --- a/commonmark-ext-heading-anchor/src/main/java/org/commonmark/ext/heading/anchor/HeadingAnchorExtension.java +++ b/commonmark-ext-heading-anchor/src/main/java/org/commonmark/ext/heading/anchor/HeadingAnchorExtension.java @@ -2,9 +2,6 @@ import org.commonmark.Extension; import org.commonmark.ext.heading.anchor.internal.HeadingIdAttributeProvider; -import org.commonmark.renderer.html.AttributeProvider; -import org.commonmark.renderer.html.AttributeProviderContext; -import org.commonmark.renderer.html.AttributeProviderFactory; import org.commonmark.renderer.html.HtmlRenderer; /** diff --git a/commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/ImageAttributesExtension.java b/commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/ImageAttributesExtension.java index 20d8aa86d..9a4de2628 100644 --- a/commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/ImageAttributesExtension.java +++ b/commonmark-ext-image-attributes/src/main/java/org/commonmark/ext/image/attributes/ImageAttributesExtension.java @@ -4,9 +4,6 @@ import org.commonmark.ext.image.attributes.internal.ImageAttributesAttributeProvider; import org.commonmark.ext.image.attributes.internal.ImageAttributesDelimiterProcessor; import org.commonmark.parser.Parser; -import org.commonmark.renderer.html.AttributeProvider; -import org.commonmark.renderer.html.AttributeProviderContext; -import org.commonmark.renderer.html.AttributeProviderFactory; import org.commonmark.renderer.html.HtmlRenderer; /** diff --git a/commonmark-ext-ins/src/main/java/org/commonmark/ext/ins/InsExtension.java b/commonmark-ext-ins/src/main/java/org/commonmark/ext/ins/InsExtension.java index e16728de2..3d2974916 100644 --- a/commonmark-ext-ins/src/main/java/org/commonmark/ext/ins/InsExtension.java +++ b/commonmark-ext-ins/src/main/java/org/commonmark/ext/ins/InsExtension.java @@ -7,14 +7,10 @@ import org.commonmark.ext.ins.internal.InsTextContentNodeRenderer; import org.commonmark.parser.Parser; import org.commonmark.renderer.NodeRenderer; -import org.commonmark.renderer.html.HtmlNodeRendererContext; -import org.commonmark.renderer.html.HtmlNodeRendererFactory; import org.commonmark.renderer.html.HtmlRenderer; import org.commonmark.renderer.markdown.MarkdownNodeRendererContext; import org.commonmark.renderer.markdown.MarkdownNodeRendererFactory; import org.commonmark.renderer.markdown.MarkdownRenderer; -import org.commonmark.renderer.text.TextContentNodeRendererContext; -import org.commonmark.renderer.text.TextContentNodeRendererFactory; import org.commonmark.renderer.text.TextContentRenderer; import java.util.Set; diff --git a/commonmark-ext-task-list-items/src/main/java/org/commonmark/ext/task/list/items/TaskListItemsExtension.java b/commonmark-ext-task-list-items/src/main/java/org/commonmark/ext/task/list/items/TaskListItemsExtension.java index 873aacdfd..b84559273 100644 --- a/commonmark-ext-task-list-items/src/main/java/org/commonmark/ext/task/list/items/TaskListItemsExtension.java +++ b/commonmark-ext-task-list-items/src/main/java/org/commonmark/ext/task/list/items/TaskListItemsExtension.java @@ -4,9 +4,6 @@ import org.commonmark.ext.task.list.items.internal.TaskListItemHtmlNodeRenderer; import org.commonmark.ext.task.list.items.internal.TaskListItemPostProcessor; import org.commonmark.parser.Parser; -import org.commonmark.renderer.NodeRenderer; -import org.commonmark.renderer.html.HtmlNodeRendererContext; -import org.commonmark.renderer.html.HtmlNodeRendererFactory; import org.commonmark.renderer.html.HtmlRenderer; /** diff --git a/commonmark-integration-test/src/test/java/org/commonmark/integration/MarkdownRendererIntegrationTest.java b/commonmark-integration-test/src/test/java/org/commonmark/integration/MarkdownRendererIntegrationTest.java index fe14273ab..9e64f9717 100644 --- a/commonmark-integration-test/src/test/java/org/commonmark/integration/MarkdownRendererIntegrationTest.java +++ b/commonmark-integration-test/src/test/java/org/commonmark/integration/MarkdownRendererIntegrationTest.java @@ -1,19 +1,9 @@ package org.commonmark.integration; -import org.commonmark.Extension; -import org.commonmark.ext.autolink.AutolinkExtension; -import org.commonmark.ext.front.matter.YamlFrontMatterExtension; -import org.commonmark.ext.gfm.strikethrough.StrikethroughExtension; -import org.commonmark.ext.gfm.tables.TablesExtension; -import org.commonmark.ext.image.attributes.ImageAttributesExtension; -import org.commonmark.ext.ins.InsExtension; -import org.commonmark.ext.task.list.items.TaskListItemsExtension; import org.commonmark.parser.Parser; import org.commonmark.renderer.markdown.MarkdownRenderer; import org.junit.jupiter.api.Test; -import java.util.List; - import static org.assertj.core.api.Assertions.assertThat; public class MarkdownRendererIntegrationTest { diff --git a/commonmark-integration-test/src/test/java/org/commonmark/integration/SourceSpanIntegrationTest.java b/commonmark-integration-test/src/test/java/org/commonmark/integration/SourceSpanIntegrationTest.java index 171cc51b1..4d18fa937 100644 --- a/commonmark-integration-test/src/test/java/org/commonmark/integration/SourceSpanIntegrationTest.java +++ b/commonmark-integration-test/src/test/java/org/commonmark/integration/SourceSpanIntegrationTest.java @@ -2,7 +2,6 @@ import org.commonmark.parser.IncludeSourceSpans; import org.commonmark.parser.Parser; -import org.commonmark.testutil.example.Example; /** * Spec and all extensions, with source spans enabled. diff --git a/commonmark-integration-test/src/test/java/org/commonmark/integration/SpecIntegrationTest.java b/commonmark-integration-test/src/test/java/org/commonmark/integration/SpecIntegrationTest.java index 07853d402..6dca4024e 100644 --- a/commonmark-integration-test/src/test/java/org/commonmark/integration/SpecIntegrationTest.java +++ b/commonmark-integration-test/src/test/java/org/commonmark/integration/SpecIntegrationTest.java @@ -2,7 +2,6 @@ import org.commonmark.renderer.html.HtmlRenderer; import org.commonmark.parser.Parser; -import org.commonmark.testutil.example.Example; import org.commonmark.testutil.SpecTestCase; import org.junit.jupiter.api.Test; diff --git a/commonmark-integration-test/src/test/java/org/commonmark/ui/DingusApp.java b/commonmark-integration-test/src/test/java/org/commonmark/ui/DingusApp.java index b6564920f..d8132fe25 100644 --- a/commonmark-integration-test/src/test/java/org/commonmark/ui/DingusApp.java +++ b/commonmark-integration-test/src/test/java/org/commonmark/ui/DingusApp.java @@ -6,8 +6,6 @@ import java.awt.*; import javax.swing.*; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; diff --git a/commonmark-test-util/src/main/java/org/commonmark/testutil/RenderingTestCase.java b/commonmark-test-util/src/main/java/org/commonmark/testutil/RenderingTestCase.java index f7da4c008..b585f4604 100644 --- a/commonmark-test-util/src/main/java/org/commonmark/testutil/RenderingTestCase.java +++ b/commonmark-test-util/src/main/java/org/commonmark/testutil/RenderingTestCase.java @@ -1,7 +1,5 @@ package org.commonmark.testutil; -import static org.assertj.core.api.Assertions.assertThat; - public abstract class RenderingTestCase { protected abstract String render(String source); diff --git a/commonmark-test-util/src/main/java/org/commonmark/testutil/SpecTestCase.java b/commonmark-test-util/src/main/java/org/commonmark/testutil/SpecTestCase.java index c29a6a69a..d61afbc4a 100644 --- a/commonmark-test-util/src/main/java/org/commonmark/testutil/SpecTestCase.java +++ b/commonmark-test-util/src/main/java/org/commonmark/testutil/SpecTestCase.java @@ -4,10 +4,8 @@ import org.commonmark.testutil.example.ExampleReader; import org.junit.jupiter.params.Parameter; import org.junit.jupiter.params.ParameterizedClass; -import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import java.util.ArrayList; import java.util.List; @ParameterizedClass diff --git a/commonmark/src/main/java/org/commonmark/internal/LinkReferenceDefinitionParser.java b/commonmark/src/main/java/org/commonmark/internal/LinkReferenceDefinitionParser.java index 5b96cf451..99e8fecd8 100644 --- a/commonmark/src/main/java/org/commonmark/internal/LinkReferenceDefinitionParser.java +++ b/commonmark/src/main/java/org/commonmark/internal/LinkReferenceDefinitionParser.java @@ -10,7 +10,6 @@ import org.commonmark.parser.beta.Scanner; import java.util.ArrayList; -import java.util.Collections; import java.util.List; /** diff --git a/commonmark/src/main/java/org/commonmark/renderer/html/HtmlRenderer.java b/commonmark/src/main/java/org/commonmark/renderer/html/HtmlRenderer.java index 6c3122421..b0264fc72 100644 --- a/commonmark/src/main/java/org/commonmark/renderer/html/HtmlRenderer.java +++ b/commonmark/src/main/java/org/commonmark/renderer/html/HtmlRenderer.java @@ -4,7 +4,6 @@ import org.commonmark.internal.renderer.NodeRendererMap; import org.commonmark.internal.util.Escaping; import org.commonmark.node.*; -import org.commonmark.renderer.NodeRenderer; import org.commonmark.renderer.Renderer; import java.util.*; diff --git a/commonmark/src/main/java/org/commonmark/renderer/text/TextContentRenderer.java b/commonmark/src/main/java/org/commonmark/renderer/text/TextContentRenderer.java index 572fceda8..9a8bcc997 100644 --- a/commonmark/src/main/java/org/commonmark/renderer/text/TextContentRenderer.java +++ b/commonmark/src/main/java/org/commonmark/renderer/text/TextContentRenderer.java @@ -3,7 +3,6 @@ import org.commonmark.Extension; import org.commonmark.internal.renderer.NodeRendererMap; import org.commonmark.node.Node; -import org.commonmark.renderer.NodeRenderer; import org.commonmark.renderer.Renderer; import java.util.ArrayList; diff --git a/commonmark/src/test/java/org/commonmark/test/ParserTest.java b/commonmark/src/test/java/org/commonmark/test/ParserTest.java index 82eb1c82d..4348563bd 100644 --- a/commonmark/src/test/java/org/commonmark/test/ParserTest.java +++ b/commonmark/src/test/java/org/commonmark/test/ParserTest.java @@ -13,7 +13,6 @@ import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashSet; -import java.util.List; import java.util.Set; import java.util.concurrent.Executors; import java.util.concurrent.Future; diff --git a/commonmark/src/test/java/org/commonmark/test/SpecCoreTest.java b/commonmark/src/test/java/org/commonmark/test/SpecCoreTest.java index fefd8fb30..047a1e6cf 100644 --- a/commonmark/src/test/java/org/commonmark/test/SpecCoreTest.java +++ b/commonmark/src/test/java/org/commonmark/test/SpecCoreTest.java @@ -6,7 +6,6 @@ import org.commonmark.parser.Parser; import org.commonmark.renderer.html.HtmlRenderer; import org.commonmark.testutil.SpecTestCase; -import org.commonmark.testutil.example.Example; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.fail; diff --git a/commonmark/src/test/java/org/commonmark/test/SpecCrLfCoreTest.java b/commonmark/src/test/java/org/commonmark/test/SpecCrLfCoreTest.java index 47ca3da4e..eb0fcd0dd 100644 --- a/commonmark/src/test/java/org/commonmark/test/SpecCrLfCoreTest.java +++ b/commonmark/src/test/java/org/commonmark/test/SpecCrLfCoreTest.java @@ -3,7 +3,6 @@ import org.commonmark.parser.Parser; import org.commonmark.renderer.html.HtmlRenderer; import org.commonmark.testutil.SpecTestCase; -import org.commonmark.testutil.example.Example; import org.junit.jupiter.api.Test; import static org.commonmark.testutil.Asserts.assertRendering; From 990e3918fc285c4f82a5a5c878f91a38f539db38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jari-Matti=20M=C3=A4kel=C3=A4?= Date: Wed, 1 Apr 2026 18:41:54 +0300 Subject: [PATCH 13/13] Remove redundant throws in declarations --- .../org/commonmark/internal/util/LineReaderTest.java | 4 ++-- .../org/commonmark/test/TextContentWriterTest.java | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/commonmark/src/test/java/org/commonmark/internal/util/LineReaderTest.java b/commonmark/src/test/java/org/commonmark/internal/util/LineReaderTest.java index b52713846..7d0e0beb7 100644 --- a/commonmark/src/test/java/org/commonmark/internal/util/LineReaderTest.java +++ b/commonmark/src/test/java/org/commonmark/internal/util/LineReaderTest.java @@ -100,7 +100,7 @@ private SlowStringReader(String s) { } @Override - public int read(char[] cbuf, int off, int len) throws IOException { + public int read(char[] cbuf, int off, int len) { Objects.checkFromIndexSize(off, len, cbuf.length); if (len == 0) { return 0; @@ -118,7 +118,7 @@ public int read(char[] cbuf, int off, int len) throws IOException { } @Override - public void close() throws IOException { + public void close() { } } } diff --git a/commonmark/src/test/java/org/commonmark/test/TextContentWriterTest.java b/commonmark/src/test/java/org/commonmark/test/TextContentWriterTest.java index a9f37792e..4641b616e 100644 --- a/commonmark/src/test/java/org/commonmark/test/TextContentWriterTest.java +++ b/commonmark/src/test/java/org/commonmark/test/TextContentWriterTest.java @@ -8,7 +8,7 @@ public class TextContentWriterTest { @Test - public void whitespace() throws Exception { + public void whitespace() { StringBuilder stringBuilder = new StringBuilder(); TextContentWriter writer = new TextContentWriter(stringBuilder); writer.write("foo"); @@ -18,7 +18,7 @@ public void whitespace() throws Exception { } @Test - public void colon() throws Exception { + public void colon() { StringBuilder stringBuilder = new StringBuilder(); TextContentWriter writer = new TextContentWriter(stringBuilder); writer.write("foo"); @@ -28,7 +28,7 @@ public void colon() throws Exception { } @Test - public void line() throws Exception { + public void line() { StringBuilder stringBuilder = new StringBuilder(); TextContentWriter writer = new TextContentWriter(stringBuilder); writer.write("foo"); @@ -38,7 +38,7 @@ public void line() throws Exception { } @Test - public void writeStripped() throws Exception { + public void writeStripped() { StringBuilder stringBuilder = new StringBuilder(); TextContentWriter writer = new TextContentWriter(stringBuilder); writer.writeStripped("foo\n bar"); @@ -46,7 +46,7 @@ public void writeStripped() throws Exception { } @Test - public void write() throws Exception { + public void write() { StringBuilder stringBuilder = new StringBuilder(); TextContentWriter writer = new TextContentWriter(stringBuilder); writer.writeStripped("foo bar");