❤Non-Permeable Membrane

    @central419/ansi-mark

    2.0.0 • Public • Published

    ansi-mark

    🖊️ a highlight marker for your color ansi strings

    Build Status Coverage Status NPM Version XO code style

    Before and After

    Before ANSI-Mark

    After ANSI-Mark

    Explanation

    If your CLI app outputs strings containing ANSI color codes, like this...

    const ansiStr = '\u001b[37m\u001b[33m<\u001b[36mbody\u001b[33m>\u001b[37m            \u001b[39m\n\u001b[37m\t\u001b[33m<\u001b[36mspan\u001b[33m>\u001b[37mGood\u001b[33m</\u001b[36mspan\u001b[33m>\u001b[37m\u001b[39m\n\u001b[37m\t\u001b[33m<\u001b[36mspan\u001b[33m>\u001b[37mBad\u001b[33m<\u001b[36mspan\u001b[33m>\u001b[37m  \u001b[39m\n\u001b[37m\u001b[33m<\u001b[36mbody\u001b[33m>\u001b[37m            \u001b[39m\n\u001b[37m\u001b[39m'
    console.log(ansiStr)

    Before ANSI-Mark

    ... then your ANSI string contains visible, and invisible characters. This makes it difficult if you want to highlight a portion of your string. The start and end position of your highlight needs to account for the invisible characters.

    But wouldn't it be simpler for everyone if there was a Node Module that let you highlight a sub-string using the offsets of the visible characters?

    That is what ansi-mark does:

    const chalk = require('chalk')
    
    const opts = {
        start: {line: 3, column: 11},
        end: {line: 4, column: 7},
        color: chalk.bgRed.white.bold,
        resetColor: true
    }
    
    const result = ansiMark(ansiStr, opts)

    After ANSI-Mark

    Keep Colors

    If you want to keep the underlying colors in the portion of the string you are highlighting, use the resetColor: false option:

    const chalk = require('chalk')
    
    const opts = {
        start: {line: 3, column: 11},
        end: {line: 4, column: 7},
        color: chalk.bgBlack
        resetColor: false
    }
    
    const result = ansiMark(ansiStr, opts)

    After ANSI-Mark Keep Color

    Using Offsets

    You can also highlight by a linear character offset rather than lines and columns

    const chalk = require('chalk')
    
    const opts = {
        start: 46,
        end: 64,
        color: chalk.bgRed.white.bold,
        resetColor: true
    }
    
    const result = ansiMark(ansiStr, opts)

    After ANSI-Mark

    Install

    $ yarn add ansi-mark
    

    Keywords

    none

    Install

    npm i @central419/ansi-mark

    DownloadsWeekly Downloads

    4

    Version

    2.0.0

    License

    MIT

    Unpacked Size

    9.42 kB

    Total Files

    4

    Last publish

    Collaborators

    • central4190