Markdown-It Wikilinks
Renders Wikimedia-style links in markdown-it. This is useful for making Markdown-based wikis.
Usage
Install this into your project:
npm --save install @tomleesm/markdown-it-wikilinks
...and use it:
const wikilinks = optionsconst md =
Output:
Click Wiki Links to learn about Wiki links.
Options
baseURL
Default: /
The base URL for absolute wiki links.
const html = // <p><a href="./wiki/Main_Page.html">Main Page</a></p>
relativeBaseURL
Default: ./
The base URL for relative wiki links.
const html = // <p><a href="#Main_Page">Main Page</a></p>
makeAllLinksAbsolute
Default: false
Render all wiki links as absolute links.
uriSuffix
Default: .html
Append this suffix to every URL.
const html = // <p><a href="./Main_Page.php">Main Page</a></p>
htmlAttributes
Default: {}
An object containing HTML attributes to be applied to every link.
const attrs = 'class': 'wikilink' 'rel': 'nofollow'const html = // <p><a href="./Main_Page.html" class="wikilink" rel="nofollow">Main Page</a></p>
generatePageNameFromLabel
Unless otherwise specified, the labels of the links are used as the targets. This means that a non-piped link such as [[Slate]]
will point to the Slate
page on your website.
But say you wanted a little more flexibility - like being able to have [[Slate]]
, [[slate]]
, [[SLATE]]
and [[Slate!]]
to all point to the same page. Well, you can do this by providing your own custom generatePageNameFromLabel
function.
Example
const _ = { return label} const html = // <p>Vive la <a href="./Revolution.html">révolution!</a> VIVE LA <a href="./Revolution.html">RÉVOLUTION!!!</a></p>
Please note that the generatePageNameFromLabel
function does not get applied for piped links such as [[/Misc/Cats/Slate|kitty]]
since those already come with a target.
postProcessPageName
A transform applied to every page name. You can override it just like generatePageNameFromLabel
(see above).
The default transform does the following things:
- trim surrounding whitespace
- sanitize the string
- replace spaces with underscores
postProcessLabel
A transform applied to every link label. You can override it just like generatePageNameFromLabel
(see above).
All the default transform does is trim surrounding whitespace.
TODO
- Unit test options
- Add examples to
postProcessPageName
andpostProcessLabel
Credits
Based on markdown-it-ins by Vitaly Puzrin, Alex Kocharin.