You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by el...@apache.org on 2021/05/28 19:11:12 UTC

[maven-doxia] branch master updated: [DOXIA-609] Fixed crosslinks starting with a dot in markdown files

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 <pl...@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,