# micromark-extension-wiki-link

> Parse and render wiki-style links

Latest version **0.0.4** (published 2021-01-21) · MIT license · 0 weekly downloads

## Install

```sh
npm install micromark-extension-wiki-link
pnpm add micromark-extension-wiki-link
yarn add micromark-extension-wiki-link
bun add micromark-extension-wiki-link
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: esm support; no vulnerabilities.

Warnings: low downloads; no types; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.4 |
| Published | 2021-01-21 |
| First published | 2020-10-18 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Dependencies | 1 |
| Unpacked size | 32.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 8 |
| Author | Mark Hudnall |
| Maintainers | landakram |
| Keywords | remark, remark-plugin, markdown, gfm, micromark, micromark-plugin |

## Links

- npm: https://www.npmjs.com/package/micromark-extension-wiki-link
- Repository: https://github.com/landakram/micromark-extension-wiki-link
- Homepage: https://github.com/landakram/micromark-extension-wiki-link#readme
- Issues: https://github.com/landakram/micromark-extension-wiki-link/issues
- npm.io page: https://npm.io/package/micromark-extension-wiki-link

## Dependencies (1)

- [@babel/runtime](https://npm.io/package/@babel/runtime.md) ^7.12.1

## Alternatives

- [@mdxeditor/editor](https://npm.io/package/@mdxeditor/editor.md) — 962.4K weekly downloads
- [mmdb-lib](https://npm.io/package/mmdb-lib.md) — 680.9K weekly downloads
- [playcanvas](https://npm.io/package/playcanvas.md) — 36.2K weekly downloads
- [@glw907/cairn-cms](https://npm.io/package/@glw907/cairn-cms.md) — 967 weekly downloads
- [markdown-to-confluence](https://npm.io/package/markdown-to-confluence.md) — 103 weekly downloads

## Recent versions

- 0.0.4 (latest) — 2021-01-21
- 0.0.3 — 2021-01-14
- 0.0.2 — 2020-10-18

## README

# micromark-extension-wiki-link

[![npm version](https://badge.fury.io/js/micromark-extension-wiki-link.svg)](https://badge.fury.io/js/micromark-extension-wiki-link) [![Build Status](https://travis-ci.org/landakram/micromark-extension-wiki-link.svg?branch=master)](https://travis-ci.org/landakram/micromark-extension-wiki-link)

This [micromark](https://github.com/micromark/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](https://github.com/remarkjs/remark)? You might want to use 
[`remark-wiki-link`](https://github.com/landakram/remark-wiki-link) instead of using this package directly.

## Usage

```javascript
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:

```javascript
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](#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:

```javascript
(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:
  
```javascript
(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>
```

---
_Source: https://npm.io/package/micromark-extension-wiki-link · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
