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 <[email protected]>
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,