micromark-extension-wiki-link

0.0.4 • Public • Published

micromark-extension-wiki-link

npm version Build Status

This micromark extension parses and renders [[Wiki Links]].

  • Parse wiki-style links and render them as anchors
  • Differentiate between "new" and "existing" wiki links by giving the parser a list of existing permalinks
  • Parse aliased wiki links i.e [[Real Page:Page Alias]]

Using remark? You might want to use remark-wiki-link instead of using this package directly.

Usage

import { syntax, html } from 'micromark-extension-wiki-link';

let serialized = micromark('[[Wiki Link]]', {
  extensions: [syntax()],
  htmlExtensions: [html()]
});

console.log(serialized);
// <p><a href="#/page/wiki_link" class="internal">Wiki Link</a></p>

Configuration options

Both the syntax extension and html extension can be configured by passing an object.

For example, one may configure the syntax extension like so:

let serialized = micromark('[[Wiki Link]]', {
  extensions: [syntax({ aliasDivider: "|" })],
  htmlExtensions: [html()]
});

syntax

  • options.aliasDivider [String]: a string to be used as the divider for aliases. See the section below on Aliasing pages. Defaults to ":".

html

  • options.permalinks [String]: An array of permalinks that should be considered existing pages. If a wiki link is parsed and its permalink matches one of these permalinks, node.data.exists will be true.

  • options.pageResolver (pageName: String) -> [String]: A function that maps a page name to an array of possible permalinks. These possible permalinks are cross-referenced with options.permalinks to determine whether a page exists. If a page doesn't exist, the first element of the array is considered the permalink.

    The default pageResolver is:

(name) => [name.replace(/ /g, '_').toLowerCase()]
  • options.hrefTemplate (permalink: String) -> String: A function that maps a permalink to some path. This path is used as the href for the rendered a.

    The default hrefTemplate is:

(permalink) => `#/page/${permalink}`
  • options.wikiLinkClassName [String]: a class name that is attached to any rendered wiki links. Defaults to "internal".
  • options.newClassName [String]: a class name that is attached to any rendered wiki links that do not exist. Defaults to "new".

Aliasing pages

Aliased pages are supported with the following markdown syntax:

[[Real Page:Page Alias]]

And will produce this HTML when rendered:

<a class="internal new" href="#/page/real_page">Page Alias</a>

Package Sidebar

Install

npm i micromark-extension-wiki-link

Weekly Downloads

4,132

Version

0.0.4

License

MIT

Unpacked Size

33.6 kB

Total Files

12

Last publish

Collaborators

  • landakram