This is an automated email from the ASF dual-hosted git repository. elharo pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven-doxia.git
The following commit(s) were added to refs/heads/master by this push: new 589e703 [DOXIA-609] Fixed crosslinks starting with a dot in markdown files 589e703 is described below commit 589e703b1ac43a058435c297dbf7333364e44372 Author: plan3d <pla...@tutanota.com> AuthorDate: Mon Mar 29 15:25:47 2021 +0200 [DOXIA-609] Fixed crosslinks starting with a dot in markdown files --- .../module/markdown/FlexmarkDoxiaLinkResolver.java | 3 ++- .../markdown/FlexmarkDoxiaLinkResolverTest.java | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/FlexmarkDoxiaLinkResolver.java b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/FlexmarkDoxiaLinkResolver.java index 52c6956..4b95027 100644 --- a/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/FlexmarkDoxiaLinkResolver.java +++ b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/FlexmarkDoxiaLinkResolver.java @@ -42,6 +42,7 @@ import com.vladsch.flexmark.util.ast.Node; * - doc.markdown to doc.html * - doc.md#anchor to doc.html#anchor * - doc.markdown#anchor to doc.html#anchor + * - ../doc.markdown#anchor to ../doc.html#anchor * - :doc.md to :doc.html * - :doc.markdown to :doc.html * @@ -64,7 +65,7 @@ public class FlexmarkDoxiaLinkResolver implements LinkResolver public FlexmarkDoxiaLinkResolver( LinkResolverContext context ) { this.pattern = Pattern.compile( - "^(?![^:]+:)([^\\.]+).(?:" + "^(?![^:]+:)((?:\\./)?(?:\\.\\./)*[^\\.]+).(?:" + MarkdownParserModule.FILE_EXTENSION + "|" + MarkdownParserModule.ALTERNATE_FILE_EXTENSION diff --git a/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/FlexmarkDoxiaLinkResolverTest.java b/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/FlexmarkDoxiaLinkResolverTest.java index 50e1108..c02d5cf 100644 --- a/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/FlexmarkDoxiaLinkResolverTest.java +++ b/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/FlexmarkDoxiaLinkResolverTest.java @@ -39,6 +39,26 @@ public class FlexmarkDoxiaLinkResolverTest checkLinkRewritten( flexmarkDoxiaLinkResolver, "doc.md#anchor", "doc.html#anchor" ); checkLinkRewritten( flexmarkDoxiaLinkResolver, "doc.markdown#anchor", "doc.html#anchor" ); + checkLinkRewritten( flexmarkDoxiaLinkResolver, "./doc.md#anchor", "./doc.html#anchor" ); + checkLinkRewritten( flexmarkDoxiaLinkResolver, "./doc.markdown#anchor", "./doc.html#anchor" ); + checkLinkRewritten( flexmarkDoxiaLinkResolver, "./dir/doc.md#anchor", "./dir/doc.html#anchor" ); + checkLinkRewritten( flexmarkDoxiaLinkResolver, "./dir/doc.markdown#anchor", "./dir/doc.html#anchor" ); + + checkLinkRewritten( flexmarkDoxiaLinkResolver, "../doc.md#anchor", "../doc.html#anchor" ); + checkLinkRewritten( flexmarkDoxiaLinkResolver, "../doc.markdown#anchor", "../doc.html#anchor" ); + checkLinkRewritten( flexmarkDoxiaLinkResolver, "../dir/doc.md#anchor", "../dir/doc.html#anchor" ); + checkLinkRewritten( flexmarkDoxiaLinkResolver, "../dir/doc.markdown#anchor", "../dir/doc.html#anchor" ); + + checkLinkRewritten( flexmarkDoxiaLinkResolver, "./../doc.md#anchor", "./../doc.html#anchor" ); + checkLinkRewritten( flexmarkDoxiaLinkResolver, "./../doc.markdown#anchor", "./../doc.html#anchor" ); + checkLinkRewritten( flexmarkDoxiaLinkResolver, "./../dir/doc.md#anchor", "./../dir/doc.html#anchor" ); + checkLinkRewritten( flexmarkDoxiaLinkResolver, "./../dir/doc.markdown#anchor", "./../dir/doc.html#anchor" ); + + checkLinkRewritten( flexmarkDoxiaLinkResolver, "../../doc.md#anchor", "../../doc.html#anchor" ); + checkLinkRewritten( flexmarkDoxiaLinkResolver, "../../doc.markdown#anchor", "../../doc.html#anchor" ); + checkLinkRewritten( flexmarkDoxiaLinkResolver, "../../dir/doc.md#anchor", "../../dir/doc.html#anchor" ); + checkLinkRewritten( flexmarkDoxiaLinkResolver, "../../dir/doc.markdown#anchor", "../../dir/doc.html#anchor" ); + // these edge cases are still allowed checkLinkRewritten( flexmarkDoxiaLinkResolver, ":doc.md", ":doc.html" ); checkLinkRewritten( flexmarkDoxiaLinkResolver, ":doc.markdown", ":doc.html" ); @@ -69,6 +89,8 @@ public class FlexmarkDoxiaLinkResolverTest checkLinkLeftUnchanged( flexmarkDoxiaLinkResolver, "docs.markdown#bad#format", LinkType.LINK ); checkLinkLeftUnchanged( flexmarkDoxiaLinkResolver, "docs.markdown#bad.format", LinkType.LINK ); checkLinkLeftUnchanged( flexmarkDoxiaLinkResolver, "docs.markdown.bad#format", LinkType.LINK ); + + checkLinkLeftUnchanged( flexmarkDoxiaLinkResolver, ".../badpath/docs.md", LinkType.LINK ); } private static void checkLinkLeftUnchanged( FlexmarkDoxiaLinkResolver flexmarkDoxiaLinkResolver, String url,