WikiParser-Node is an offline Wikitext parser developed by Bhsd for the Node.js environment. It can parse almost all wiki syntax and generate an Abstract Syntax Tree (AST) (Try it online). It also allows for easy querying and modification of the AST, and returns the modified wikitext.
Mini (also known as WikiLint)
This version provides a CLI, but only retains the parsing functionality and linting functionality. The parsed AST cannot be modified. It is used for a VSCode extension and an ESLint plugin.
A browser-compatible version, which can be used for code highlighting or as a linting plugin in conjunction with editors such as CodeMirror and Monaco. (Usage example)
Please install the corresponding version as needed (WikiParser-Node
or WikiLint
), for example:
npm i wikiparser-node
or
npm i wikilint
You can download the code via CDN, for example:
<script src="//cdn.jsdelivr.net/npm/wikiparser-node@browser/bundle/bundle.min.js"></script>
or
<script src="//unpkg.com/wikiparser-node@browser/bundle/bundle.min.js"></script>
For more browser extensions, please refer to the corresponding documentation.
For MediaWiki sites hosted by the Wikimedia Foundation, such as different language editions of Wikipedia, you can use the following command to obtain the parser configuration:
npx getParserConfig <site> <script path> [force]
# For example:
npx getParserConfig jawiki https://ja.wikipedia.org/w
The generated configuration file will be saved in the config
directory. You can then use the site name for Parser.config
.
// For example:
Parser.config = 'jawiki';
Please refer to the Wiki.
- Preformatted text with a leading space is only processed by
Token.prototype.toHtml
.
- Many extensions are not supported, such as
<indicator>
and<ref>
. - Most parser functions are not supported.
- TOC is not supported.
- Link trail is not supported (Example).
- Incomplete
<p>
wrapping (Examples 1, 2). - URI encoding in free external links (Example).
- When the entire table content is fostered, the table does not have an empty
<td>
(Examples 1, 2, 3, 4).