diff --git a/.changeset/old-planets-battle.md b/.changeset/many-ligers-sneeze.md
similarity index 61%
rename from .changeset/old-planets-battle.md
rename to .changeset/many-ligers-sneeze.md
index f613b29c9..499eeba75 100644
--- a/.changeset/old-planets-battle.md
+++ b/.changeset/many-ligers-sneeze.md
@@ -1,5 +1,5 @@
---
-'@portaljs/remark-wiki-link': major
+'@portaljs/remark-wiki-link': patch
---
Changed regex to permit any symbols other than #
diff --git a/packages/remark-wiki-link/test/micromarkExtensionWikiLink.spec.ts b/packages/remark-wiki-link/test/micromarkExtensionWikiLink.spec.ts
index a2c408c64..165717e76 100644
--- a/packages/remark-wiki-link/test/micromarkExtensionWikiLink.spec.ts
+++ b/packages/remark-wiki-link/test/micromarkExtensionWikiLink.spec.ts
@@ -321,4 +321,15 @@ describe("micromark-extension-wiki-link", () => {
);
});
});
+
+ describe("Links with special characters", () => {
+ test("parses a link with special characters and symbols", () => {
+ const serialized = micromark("[[li nk-w(i)th-àcèô íã_a(n)d_underline!:ª%@'*º$ °~./\\#li nk-w(i)th-àcèô íã_a(n)d_underline!:ª%@'*º$ °~./\\]]", "ascii", {
+ extensions: [syntax()],
+ htmlExtensions: [html() as any],
+ });
+ const prefixExpected = '
{
describe("parses a wikilink", () => {
test("with 'raw' file format (default) that has no matching permalink", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
+ const processor = unified().use(markdown).use(wikiLinkPlugin);
let ast = processor.parse("[[Wiki Link]]");
ast = processor.runSync(ast);
@@ -165,7 +161,7 @@ describe("remark-wiki-link", () => {
describe("aliases and headings", () => {
test("parses a wiki link with heading", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
+ const processor = unified().use(markdown).use(wikiLinkPlugin);
let ast = processor.parse("[[Wiki Link#Some Heading]]");
ast = processor.runSync(ast);
@@ -189,32 +185,8 @@ describe("remark-wiki-link", () => {
});
});
- test("Alias with accent", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
-
- let ast = processor.parse("[[link|Alias with àcèôíã]]");
- ast = processor.runSync(ast);
- expect(select("wikiLink", ast)).not.toEqual(null);
-
- visit(ast, "wikiLink", (node: Node) => {
- expect(node.data?.exists).toEqual(false);
- expect(node.data?.permalink).toEqual("link");
- expect(node.data?.alias).toEqual("Alias with àcèôíã");
- expect(node.data?.hName).toEqual("a");
- expect((node.data?.hProperties as any).className).toEqual(
- "internal new"
- );
- expect((node.data?.hProperties as any).href).toEqual(
- "link"
- );
- expect((node.data?.hChildren as any)[0].value).toEqual(
- "Alias with àcèôíã"
- );
- })
- })
-
test("parses a wiki link with heading and alias", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
+ const processor = unified().use(markdown).use(wikiLinkPlugin);
let ast = processor.parse("[[Wiki Link#Some Heading|Alias]]");
ast = processor.runSync(ast);
@@ -237,7 +209,7 @@ describe("remark-wiki-link", () => {
});
test("parses a wiki link to a heading on the same page", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
+ const processor = unified().use(markdown).use(wikiLinkPlugin);
let ast = processor.parse("[[#Some Heading]]");
ast = processor.runSync(ast);
@@ -256,35 +228,11 @@ describe("remark-wiki-link", () => {
expect((node.data?.hChildren as any)[0].value).toEqual("Some Heading");
});
});
-
- test("parses a link and alias with accent", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
-
- let ast = processor.parse("[[link|Alias-with-dashes]]");
- ast = processor.runSync(ast);
- expect(select("wikiLink", ast)).not.toEqual(null);
-
- visit(ast, "wikiLink", (node: Node) => {
- expect(node.data?.exists).toEqual(false);
- expect(node.data?.permalink).toEqual("link");
- expect(node.data?.alias).toEqual("Alias-with-dashes");
- expect(node.data?.hName).toEqual("a");
- expect((node.data?.hProperties as any).className).toEqual(
- "internal new"
- );
- expect((node.data?.hProperties as any).href).toEqual(
- "link"
- );
- expect((node.data?.hChildren as any)[0].value).toEqual(
- "Alias-with-dashes"
- );
- })
- })
});
describe("image embeds", () => {
test("parses an image embed of supported file format", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
+ const processor = unified().use(markdown).use(wikiLinkPlugin);
let ast = processor.parse("![[My Image.png]]");
ast = processor.runSync(ast);
@@ -302,7 +250,7 @@ describe("remark-wiki-link", () => {
});
test("parses an image embed of unsupported file format", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
+ const processor = unified().use(markdown).use(wikiLinkPlugin);
let ast = processor.parse("![[My Image.xyz]]");
ast = processor.runSync(ast);
@@ -376,7 +324,7 @@ describe("remark-wiki-link", () => {
});
test("parses an image embed with an alt text", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
+ const processor = unified().use(markdown).use(wikiLinkPlugin);
let ast = processor.parse("![[My Image.png|Alt Text]]");
ast = processor.runSync(ast);
@@ -394,7 +342,7 @@ describe("remark-wiki-link", () => {
});
test("parses a pdf embed", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
+ const processor = unified().use(markdown).use(wikiLinkPlugin);
let ast = processor.parse("![[My Document.pdf]]");
ast = processor.runSync(ast);
@@ -414,122 +362,26 @@ describe("remark-wiki-link", () => {
});
describe("Links with special characters", () => {
- test("parses a link with accent", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
-
- let ast = processor.parse("[[link with àcèôíã]]");
- ast = processor.runSync(ast);
- expect(select("wikiLink", ast)).not.toEqual(null);
-
- visit(ast, "wikiLink", (node: Node) => {
- expect(node.data?.exists).toEqual(false);
- expect(node.data?.permalink).toEqual("link with àcèôíã");
- expect(node.data?.alias).toEqual(null);
- expect(node.data?.hName).toEqual("a");
- expect((node.data?.hProperties as any).className).toEqual(
- "internal new"
- );
- expect((node.data?.hProperties as any).href).toEqual(
- "link with àcèôíã"
- );
- expect((node.data?.hChildren as any)[0].value).toEqual(
- "link with àcèôíã"
- );
- })
- });
-
- test("parses a link with dashes", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
-
- let ast = processor.parse("[[link-with-dashes]]");
- ast = processor.runSync(ast);
- expect(select("wikiLink", ast)).not.toEqual(null);
-
- visit(ast, "wikiLink", (node: Node) => {
- expect(node.data?.exists).toEqual(false);
- expect(node.data?.permalink).toEqual("link-with-dashes");
- expect(node.data?.alias).toEqual(null);
- expect(node.data?.hName).toEqual("a");
- expect((node.data?.hProperties as any).className).toEqual(
- "internal new"
- );
- expect((node.data?.hProperties as any).href).toEqual(
- "link-with-dashes"
- );
- expect((node.data?.hChildren as any)[0].value).toEqual(
- "link-with-dashes"
- );
- })
- });
-
- test("parses a link with underline", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
-
- let ast = processor.parse("[[link_with_dashes]]");
- ast = processor.runSync(ast);
- expect(select("wikiLink", ast)).not.toEqual(null);
-
- visit(ast, "wikiLink", (node: Node) => {
- expect(node.data?.exists).toEqual(false);
- expect(node.data?.permalink).toEqual("link_with_dashes");
- expect(node.data?.alias).toEqual(null);
- expect(node.data?.hName).toEqual("a");
- expect((node.data?.hProperties as any).className).toEqual(
- "internal new"
- );
- expect((node.data?.hProperties as any).href).toEqual(
- "link_with_dashes"
- );
- expect((node.data?.hChildren as any)[0].value).toEqual(
- "link_with_dashes"
- );
- })
- });
-
- test("parses a link with parenthesis", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
-
- let ast = processor.parse("[[(link wi(th) (p)arenthesis)]]");
- ast = processor.runSync(ast);
- expect(select("wikiLink", ast)).not.toEqual(null);
-
- visit(ast, "wikiLink", (node: Node) => {
- expect(node.data?.exists).toEqual(false);
- expect(node.data?.permalink).toEqual("(link wi(th) (p)arenthesis)");
- expect(node.data?.alias).toEqual(null);
- expect(node.data?.hName).toEqual("a");
- expect((node.data?.hProperties as any).className).toEqual(
- "internal new"
- );
- expect((node.data?.hProperties as any).href).toEqual(
- "(link wi(th) (p)arenthesis)"
- );
- expect((node.data?.hChildren as any)[0].value).toEqual(
- "(link wi(th) (p)arenthesis)"
- );
- })
- });
-
- test("parses a link with random symbols", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
+ test("parses a link with special characters and symbols", () => {
+ const processor = unified().use(markdown).use(wikiLinkPlugin);
- let ast = processor.parse("[[my file !:ª%@'*º$#°~./\\]]");
+ let ast = processor.parse("[[li nk-w(i)th-àcèô íã_a(n)d_underline!:ª%@'*º$ °~./\\#li-nk-w(i)th-àcèô íã_a(n)d_underline!:ª%@'*º$ °~./\\]]");
ast = processor.runSync(ast);
expect(select("wikiLink", ast)).not.toEqual(null);
visit(ast, "wikiLink", (node: Node) => {
expect(node.data?.exists).toEqual(false);
- expect(node.data?.permalink).toEqual("my file !:ª%@'*º$");
+ expect(node.data?.permalink).toEqual("li nk-w(i)th-àcèô íã_a(n)d_underline!:ª%@'*º$ °~./\\");
expect(node.data?.alias).toEqual(null);
expect(node.data?.hName).toEqual("a");
expect((node.data?.hProperties as any).className).toEqual(
"internal new"
);
expect((node.data?.hProperties as any).href).toEqual(
- "my file !:ª%@'*º$#°~./\\"
+ "li nk-w(i)th-àcèô íã_a(n)d_underline!:ª%@'*º$ °~./\\#li-nk-w(i)th-àcèô-íã_a(n)d_underline!:ª%@'*º$ °~./\\"
);
expect((node.data?.hChildren as any)[0].value).toEqual(
- "my file !:ª%@'*º$#°~./\\"
+ "li nk-w(i)th-àcèô íã_a(n)d_underline!:ª%@'*º$ °~./\\#li-nk-w(i)th-àcèô íã_a(n)d_underline!:ª%@'*º$ °~./\\"
);
})
});
@@ -537,7 +389,7 @@ describe("remark-wiki-link", () => {
describe("invalid wiki links", () => {
test("doesn't parse a wiki link with two missing closing brackets", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
+ const processor = unified().use(markdown).use(wikiLinkPlugin);
let ast = processor.parse("[[Wiki Link");
ast = processor.runSync(ast);
@@ -546,7 +398,7 @@ describe("remark-wiki-link", () => {
});
test("doesn't parse a wiki link with one missing closing bracket", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
+ const processor = unified().use(markdown).use(wikiLinkPlugin);
let ast = processor.parse("[[Wiki Link]");
ast = processor.runSync(ast);
@@ -555,7 +407,7 @@ describe("remark-wiki-link", () => {
});
test("doesn't parse a wiki link with a missing opening bracket", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
+ const processor = unified().use(markdown).use(wikiLinkPlugin);
let ast = processor.parse("Wiki Link]]");
ast = processor.runSync(ast);
@@ -564,7 +416,7 @@ describe("remark-wiki-link", () => {
});
test("doesn't parse a wiki link in single brackets", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
+ const processor = unified().use(markdown).use(wikiLinkPlugin);
let ast = processor.parse("[Wiki Link]");
ast = processor.runSync(ast);
@@ -608,7 +460,7 @@ describe("remark-wiki-link", () => {
});
test("parses wiki links to index files", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
+ const processor = unified().use(markdown).use(wikiLinkPlugin);
let ast = processor.parse("[[/some/folder/index]]");
ast = processor.runSync(ast);
@@ -630,7 +482,7 @@ describe("remark-wiki-link", () => {
describe("other", () => {
test("parses a wiki link to some index page in a folder with no matching permalink", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
+ const processor = unified().use(markdown).use(wikiLinkPlugin);
let ast = processor.parse("[[/some/folder/index]]");
ast = processor.runSync(ast);
@@ -672,7 +524,7 @@ describe("remark-wiki-link", () => {
});
test("parses a wiki link to home index page with no matching permalink", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
+ const processor = unified().use(markdown).use(wikiLinkPlugin);
let ast = processor.parse("[[/index]]");
ast = processor.runSync(ast);
@@ -712,7 +564,7 @@ describe("remark-wiki-link", () => {
describe("transclusions", () => {
test("replaces a transclusion with a regular wiki link", () => {
- const processor = createMarkdownProcessorWithWikiLinkPlugin();
+ const processor = unified().use(markdown).use(wikiLinkPlugin);
let ast = processor.parse("![[Some Page]]");
ast = processor.runSync(ast);