MultiMarkdown table syntax plugin for markdown-it markdown parser
In general Markdown syntax, we have to write raw HTML tags when colspan
attribute is needed. Luckily, I found that MultiMarkdown had defined complete and clear rules for advanced Markdown table syntax, and compatible to general Markdown table syntax.
So I extend the table parser in markdown-it to support MultiMarkdown table syntax. For now, the following features are provided:
- Cells spanning multiple columns
- Grouped table headers
- Grouped table rows
- Table captions
- Lists in table cell (optional)
- Line breaks in table cells (optional)
Noted that the plugin might behave differently from MultiMarkdown in some edge cases; since the plugin aims just to follow the rules in MultiMarkdown User's Guide.
var md = require('markdown-it')()
.use(require('markdown-it-multimd-table'));
md.render(/*...*/)
To simply test this plugin, you can do these in terminal:
$ mkdir markdown-it-multimd-table
$ cd markdown-it-multimd-table
$ npm install markdown-it-multimd-table --prefix .
$ vim test.js
var md = require('markdown-it')()
.use(require('markdown-it-multimd-table'));
const exampleTable =
"| | Grouping || \n" +
"First Header | Second Header | Third Header | \n" +
" ------------ | :-----------: | -----------: | \n" +
"Content | *Long Cell* || \n" +
"Content | **Cell** | Cell | \n" +
" \n" +
"New section | More | Data | \n" +
"And more | With an escaped '\\|' || \n" +
"[Prototype table] \n";
console.log(md.render(exampleTable));
$ node test.js > test.html
$ firefox test.html
And you will see the rendered table in the browser:
Grouping | ||
---|---|---|
First Header | Second Header | Third Header |
Content | Long Cell | |
Content | Cell | Cell |
New section | More | Data |
And more | With an escaped '|' |
Put backslashes at end to make the table rows parsed as multiple lines. This feature is contributed by Lucas-C.
First header | Second header
-------------|---------------
List: | More \
- over | data \
- several | \
- lines |
would be parsed as
First header | Second header |
---|---|
List:
|
More data |
And here's how you enable the feature.
var md = require('markdown-it')()
.use(require('markdown-it-multimd-table'), {enableMultilineRows: true});
- MultiMarkdown, Lightweight markup processor to produce HTML, LaTeX, and more.
- markdown-it, Markdown parser, done right. 100% CommonMark support, extensions, syntax plugins & high speed.
This software is licensed under the MIT license © RedBug312.