markdown-to-ansi

    0.1.1 • Public • Published

    markdown-to-ansi

    Convert markdown to ansi with support of hyperlinks.

    npm status node Test JavaScript Style Guide

    Features

    Meant for short snippets of markdown, markdown-to-ansi supports a subset of (GFM) markdown:

    • Inline code
    • Links. If the terminal does not support hyperlinks, only the url is returned.
    • Literal urls. GitHub and npm urls are shortened (see example below).
    • Emphasis and strong
    • Headings (only one level)
    • Thematic breaks (---)

    Other markdown is simply returned as markdown (not necessarily as-is because it does go through a parser). Pull requests are welcome to support additional markdown syntax. It's easy to extend because markdown-to-ansi is built on the micromark parser and friends.

    Usage

    example.md:

    ## Links
    
    Literal url: https://example.com
    Markdown link: [beep](https://example.com)
    With formatting: [`boop`](https://example.com)
    PR: https://github.com/vweevers/markdown-to-ansi/pull/1
    Commit: https://github.com/vweevers/markdown-to-ansi/commit/1234567
    Repo: https://github.com/vweevers/markdown-to-ansi
    Package: https://www.npmjs.com/package/markdown-to-ansi
    
    ---
    
    ## Lists, strong and emphasis
    
    - **foo**
    - _bar_
    - **_baz_**
    

    example.js:

    const transform = require('markdown-to-ansi')()
    const fs = require('fs')
    
    const markdown = fs.readFileSync('example.md', 'utf8')
    const result = transform(markdown)
    
    console.log(result)

    Results in:

    example screenshot 1

    My terminal doesn't support bold, so let me demonstrate custom styles:

    const chalk = require('chalk')
    const transform = require('markdown-to-ansi')({
      style: {
        thematicBreak: chalk.red,
        emphasis: chalk.underline,
        strong: chalk.red
      }
    })

    Results in:

    example screenshot 2

    API

    transform = require('markdown-to-ansi')([options])

    Factory that returns a transform function. Options:

    • stream: stream to detect support of hyperlinks on, defaults to stdout
    • width (number): terminal width, used for thematic breaks, defaults to stream.columns
    • style (object): override one or more styles by providing functions that return a formatted string for:
      • inlineCode
      • heading
      • emphasis
      • strong
      • thematicBreak.

    ansi = transform(markdown)

    Takes a markdown string, returns a string containing ansi escape sequences.

    Install

    With npm do:

    npm install markdown-to-ansi
    

    License

    MIT © Vincent Weevers

    Install

    npm i markdown-to-ansi

    DownloadsWeekly Downloads

    3

    Version

    0.1.1

    License

    MIT

    Unpacked Size

    9.18 kB

    Total Files

    4

    Last publish

    Collaborators

    • avatar