PR-URL: https://github.com/nodejs/node/pull/14417 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Teddy Katz <teddy.katz@gmail.com> Reviewed-By: Roman Reiss <me@silverwind.io> Reviewed-By: Refael Ackermann <refack@gmail.com> |
||
|---|---|---|
| .. | ||
| lib | ||
| index.js | ||
| package.json | ||
| readme.md | ||
remark-stringify

Compiler for unified. Stringifies an mdast syntax tree to markdown. Used in the remark processor. Can be extended to change how markdown is compiled.
Installation
npm:
npm install remark-stringify
Usage
var unified = require('unified');
var parse = require('remark-parse');
var toc = require('remark-toc');
var stringify = require('remark-stringify');
process.stdin
.pipe(unified())
.use(markdown)
.use(toc)
.use(html)
.pipe(process.stdout, {
'bullet': '*',
'fence': '~',
'fences': true,
'incrementListMarker': false
});
Table of Contents
API
processor.use(stringify)
Configure the processor to stringify mdast syntax trees
to markdown.
options
Options are passed later through processor.stringify(),
processor.process(), or processor.pipe().
The following settings are supported:
-
gfm(boolean, default:true):- Escape pipes (
|, for tables); - Escape colons (
:, for literal URLs) - Escape tildes (
~, for strike-through).
- Escape pipes (
-
commonmark(boolean, default:false):- Compile adjacent blockquotes separately;
- Escape more characters using slashes, instead of as entities.
-
pedantic(boolean, default:false):- Escape underscores in words.
-
entities(stringorboolean, default:false):-
true— Entities are generated for special HTML characters (&>&) and non-ASCII characters (©>©). If named entities are not (widely) supported, numbered character references are used (’>’); -
'numbers'— Numbered entities are generated (&>&) for special HTML characters and non-ASCII characters. -
'escape'— Special HTML characters are encoded (&>&,’>’), non-ASCII characters not (ö persists).
-
-
setext(boolean, default:false) — Compile headings, when possible, in Setext-style: using=for level one headings and-for level two headings. Other heading levels are compiled as ATX (respectingcloseAtx). -
closeAtx(boolean, default:false) — Compile ATX headings with the same amount of closing hashes as opening hashes. -
looseTable(boolean, default:false) — Create tables without fences (initial and final pipes). -
spacedTable(boolean, default:true) — Create tables without spacing between pipes and content. -
fence('~'or'`', default:'`') — Fence marker to use for code blocks. -
fences(boolean, default:false) — Stringify code blocks without language with fences. -
bullet('-','*', or'+', default:'-') — Bullet marker to use for unordered list items. -
listItemIndent('tab','mixed'or'1', default:'tab')How to indent the content from list items:
'tab': use tab stops (4 spaces);'1': use one space;'mixed': use1for tight andtabfor loose list items.
-
incrementListMarker(boolean, default:true) — Whether to increment ordered list item bullets. -
rule('-','*', or'_', default:'*') — Marker to use for thematic breaks (horizontal rules). -
ruleRepetition(number, default:3) — Number of markers to use for thematic breaks (horizontal rules). Should be3or more. -
ruleSpaces(boolean, defaulttrue) — Whether to pad thematic break (horizontal rule) markers with spaces. -
strong('_'or'*', default'*') — Marker to use for importance. -
emphasis('_'or'*', default'_') — Marker to use for emphasis.
stringify.Compiler
Access to the raw compiler, if you need it.
Extending the Compiler
If this plug-in is used, it adds a Compiler constructor
to the processor. Other plug-ins can change and add visitors on
the compiler’s prototype to change how markdown is stringified.
The below plug-in modifies a visitor to add an extra blank line before level two headings.
function gap(processor) {
var Compiler = processor.Compiler;
var visitors = Compiler.prototype.visitors;
var heading = visitors.heading;
/* Add a visitor for `heading`s. */
visitors.heading = function (node) {
return (node.depth === 2 ? '\n' : '') + heading.apply(this, arguments);
};
}
module.exports = gap;
Compiler#visitors
An object mapping node types to visitors.
function visitor(node[, parent])
Stringify node.
Parameters
Returns
string, the compiled given node.