From a19695ce545c420a623bcdfbaae841954e077405 Mon Sep 17 00:00:00 2001 From: ani28-bit Date: Wed, 17 Jun 2026 11:59:40 +0600 Subject: [PATCH 1/2] Refactor duplicated parsing workflow --- .../java/org/commonmark/parser/Parser.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/commonmark/src/main/java/org/commonmark/parser/Parser.java b/commonmark/src/main/java/org/commonmark/parser/Parser.java index 8faac789b..8d3f7690a 100644 --- a/commonmark/src/main/java/org/commonmark/parser/Parser.java +++ b/commonmark/src/main/java/org/commonmark/parser/Parser.java @@ -66,6 +66,10 @@ public static Builder builder() { return new Builder(); } + private Node processParsedDocument(Node document) { + return postProcess(document); + } + /** * Parse the specified input text into a tree of nodes. *

@@ -74,11 +78,12 @@ public static Builder builder() { * @param input the text to parse - must not be null * @return the root node */ + public Node parse(String input) { - Objects.requireNonNull(input, "input must not be null"); - DocumentParser documentParser = createDocumentParser(); - Node document = documentParser.parse(input); - return postProcess(document); + Objects.requireNonNull(input); + DocumentParser documentParser = createDocumentParser(); + + return processParsedDocument(documentParser.parse(input)); } /** @@ -100,10 +105,10 @@ public Node parse(String input) { * @throws IOException when reading throws an exception */ public Node parseReader(Reader input) throws IOException { - Objects.requireNonNull(input, "input must not be null"); + Objects.requireNonNull(input); DocumentParser documentParser = createDocumentParser(); - Node document = documentParser.parse(input); - return postProcess(document); + return processParsedDocument(documentParser.parse(input)); + } private DocumentParser createDocumentParser() { From 8c3251ecce7d52d0310fbc35f55a9bda5ff676f0 Mon Sep 17 00:00:00 2001 From: ani28-bit Date: Wed, 17 Jun 2026 19:29:50 +0600 Subject: [PATCH 2/2] Refactor Parser.Builder: extract methods for extension handling, validation, and inline parser factory --- .../java/org/commonmark/parser/Parser.java | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/commonmark/src/main/java/org/commonmark/parser/Parser.java b/commonmark/src/main/java/org/commonmark/parser/Parser.java index 8d3f7690a..2cac1c5a3 100644 --- a/commonmark/src/main/java/org/commonmark/parser/Parser.java +++ b/commonmark/src/main/java/org/commonmark/parser/Parser.java @@ -152,13 +152,18 @@ public Parser build() { public Builder extensions(Iterable extensions) { Objects.requireNonNull(extensions, "extensions must not be null"); for (Extension extension : extensions) { + applyExtension(extension); + } + return this; + } + private void applyExtension(Extension extension){ if (extension instanceof ParserExtension) { ParserExtension parserExtension = (ParserExtension) extension; parserExtension.extend(this); } } - return this; - } + + /** * Describe the list of markdown features the parser will recognize and parse. @@ -222,12 +227,15 @@ public Builder includeSourceSpans(IncludeSourceSpans includeSourceSpans) { * @return {@code this} */ public Builder maxOpenBlockParsers(int maxOpenBlockParsers) { - if (maxOpenBlockParsers < 0) { - throw new IllegalArgumentException("maxOpenBlockParsers must be >= 0"); - } + validateMaxOpenBlockParsers(maxOpenBlockParsers); this.maxOpenBlockParsers = maxOpenBlockParsers; return this; } + private void validateMaxOpenBlockParsers(int value){ + if (value < 0) { + throw new IllegalArgumentException("maxOpenBlockParsers must be >= 0"); + } + } /** * Add a custom block parser factory. @@ -340,11 +348,10 @@ public Builder inlineParserFactory(InlineParserFactory inlineParserFactory) { } private InlineParserFactory getInlineParserFactory() { - if (inlineParserFactory != null) { - return inlineParserFactory; - } else { - return InlineParserImpl::new; - } + return inlineParserFactory != null + ? inlineParserFactory : + InlineParserImpl::new; + } }