Skip to content
Multimarkdown table syntax plugin for markdown-it markdown parser
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
dist Publish as version 3.1.3 Jun 24, 2018
test
.eslintignore
.eslintrc
.gitignore Remove unused items from .gitignore Mar 2, 2018
.travis.yml Change supporting node versions in Travis CI Dec 9, 2017
LICENSE Copied table codes from markdown-it Aug 10, 2017
Makefile
README.md Update README.md Apr 19, 2018
bower.json
index.js
package.json

README.md

NPM version Build Status Coverage Status

MultiMarkdown table syntax plugin for markdown-it markdown parser

Intro

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.

Usage

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:

Prototype table
Grouping
First Header Second Header Third Header
Content Long Cell
Content Cell Cell
New section More Data
And more With an escaped '|'

Multiple lines of row (optional)

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:

  • over
  • several
  • lines

More data

And here's how you enable the feature.

var md = require('markdown-it')()
            .use(require('markdown-it-multimd-table'), {enableMultilineRows: true});

Credits

  • MultiMarkdown, Lightweight markup processor to produce HTML, LaTeX, and more.
  • markdown-it, Markdown parser, done right. 100% CommonMark support, extensions, syntax plugins & high speed.

License

This software is licensed under the MIT license © RedBug312.

You can’t perform that action at this time.