markdown-it-multimd-table
    TypeScript icon, indicating that this package has built-in type declarations

    4.2.0 • Public • Published

    GitHub Action NPM version Coverage Status

    MultiMarkdown table syntax plugin for markdown-it markdown parser

    Intro

    Markdown specs defines only the basics for tables. When users want common features like colspan, they must fallback to raw HTML. And writing tables in HTML is truly lengthy and troublesome.

    This plugin extends markdown-it with MultiMarkdown table syntax. MultiMarkdown is an extended Markdown spec. It defines clear rules for advanced Markdown table syntax, while being consistent with original pipe table; markdown-it is a popular Markdown parser in JavaScript and allows plugins extending itself.

    The features are provided:

    • Cell spans over columns
    • Cell spans over rows (optional)
    • Divide rows into sections
    • Multiple table headers
    • Table caption
    • Block-level elements such as lists, codes... (optional)
    • Omitted table header (optional)

    Noted that the plugin is not a re-written of MultiMarkdown. This plugin will behave differently from the official compiler, but doing its best to obey rules defined in MultiMarkdown User's Guide. Please pose an issue if there are weird results for sensible inputs.

    Usage

    // defaults
    var md = require('markdown-it')()
                .use(require('markdown-it-multimd-table'));
    
    // full options list (equivalent to defaults)
    var md = require('markdown-it')()
                .use(require('markdown-it-multimd-table'), {
                  multiline:  false,
                  rowspan:    false,
                  headerless: false,
                  multibody:  true,
                  aotolabel:  true,
                });
    
    md.render(/*...*/)

    For a quick demo:

    $ mkdir markdown-it-multimd-table
    $ cd markdown-it-multimd-table
    $ npm install markdown-it 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

    Here's the table expected on 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 '|'

    Noted that GitHub filters out style property, so the example uses align the obsolete one. However it outputs style="text-align: ..." in actual.

    Options

    Multiline

    Backslash at end merges with line content below.
    Feature contributed by Lucas-C.

    |   Markdown   | Rendered HTML |
    |--------------|---------------|
    |    *Italic*  | *Italic*      | \
    |              |               |
    |    - Item 1  | - Item 1      | \
    |    - Item 2  | - Item 2      |
    |    ```python | ```python       \
    |    .1 + .2   | .1 + .2         \
    |    ```       | ```           |

    This is parsed below when the option enabled:

    Markdown Rendered HTML
    *Italic*
    

    Italic

    - Item 1
    - Item 2
    • Item 1
    • Item 2
    ```python
    .1 + .2
    ```
    .1 + .2
    

    Rowspan

    ^^ indicates cells being merged above.
    Feature contributed by pmccloghrylaing.

    Stage | Direct Products | ATP Yields
    ----: | --------------: | ---------:
    Glycolysis | 2 ATP ||
    ^^ | 2 NADH | 3--5 ATP |
    Pyruvaye oxidation | 2 NADH | 5 ATP |
    Citric acid cycle | 2 ATP ||
    ^^ | 6 NADH | 15 ATP |
    ^^ | 2 FADH2 | 3 ATP |
    **30--32** ATP |||
    [Net ATP yields per hexose]

    This is parsed below when the option enabled:

    Net ATP yields per hexose
    Stage Direct Products ATP Yields
    Glycolysis 2 ATP
    2 NADH 3–5 ATP
    Pyruvaye oxidation 2 NADH 5 ATP
    Citric acid cycle 2 ATP
    6 NADH 15 ATP
    2 FADH2 3 ATP
    30–32 ATP

    Headerless

    Table header can be eliminated.

    |--|--|--|--|--|--|--|--|
    |♜|  |♝|♛|♚|♝|♞|♜|
    |  |♟|♟|♟|  |♟|♟|♟|
    |♟|  |♞|  |  |  |  |  |
    |  |♗|  |  |♟|  |  |  |
    |  |  |  |  |♙|  |  |  |
    |  |  |  |  |  |♘|  |  |
    |♙|♙|♙|♙|  |♙|♙|♙|
    |♖|♘|♗|♕|♔|  |  |♖|

    This is parsed below when the option enabled:

    Multibody

    An empty line separates consecutive table bodies. When disabled, an empty line always cuts off the tables.

    Autolabel

    Table id attribute follows the table caption if not labeled. When disabled, caption without labels cannot generate the attribute.

    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.

    Install

    npm i markdown-it-multimd-table

    DownloadsWeekly Downloads

    6,019

    Version

    4.2.0

    License

    MIT

    Unpacked Size

    88.7 kB

    Total Files

    18

    Last publish

    Collaborators

    • redbug312