remark-wiki-link
remark-wiki-link consists of 3 projects:
micromark-extension-wiki-linkmdast-util-wiki-linkremark-wiki-link
I moved all 3 projects in monorepo - this way it is more convinient to work. Changed all plugins to TypeScript, simplified build process (ES6 only), changed options.
It is also worth to mention: wikirefs.
Open questions
But there is more…
export function remarkWikiLink(options) { const { bdb } = options;
return wikiLinkPlugin.call(this, { linkTemplate: ({ slug, alias }) => { const [slugWithoutAnchor, anchor] = slug.split("#"); const doc = bdb.documentsSync({ slug: slugWithoutAnchor })[0]; if (doc) { return { hName: "a", hProperties: { href: anchor ? `${doc.url()}#${anchor}` : doc.url(), }, hChildren: [ { type: "text", value: alias == null ? doc.frontmatter().title : alias, }, ], }; } else { return { hName: "span", hProperties: { class: "broken-link", title: `Can't resolve link to ${slug}`, }, hChildren: [{ type: "text", value: alias || slug }], }; } }, });}- What about direct integration with BrainDB? (see code above 👆)
- What about PML?
- Related functionality Icons for external links
- support anchors in wikilinks (
[[page#anchor]],[[page#anchor|alias]])- do we need to url-encode anchors?
- do we need to slugify anchors?
- check that anchors correspond to some header in target document
- what about ambiguous links (
bdb.documentsSync({ slug: permalink }).length > 1)? - image wikilinks (
![[some.jpg]])
Options
- make general plugin for all links, like
remark-code-hook?- and based on it resolve both wikilinks and PML
- maybe call it
remark-link-resolver?
- make another plugin which would take
BrainDBas option - use named exports in
remark-wkik-linkto expose “classic” and “new” versions- where “new” is plugin which would take
BrainDBas option
- where “new” is plugin which would take