Slice a string included ANSI escape codes
Slice a string included ANSI escape codes
In some use cases slice-ansi did not work properly.
This is what I reworked with reference to slice-ansi.
npm install slice-ansi-string
const sliceAnsiString = require('slice-ansi-string');
const str = 'A\u001b[31mBC\u001b[39mD'; // Meaning like "A<red>BC</red>D"
console.log(sliceAnsiString(str, 0, 1)); // -> "A"
console.log(sliceAnsiString(str, 0, 2)); // -> "A\u001b[31mB\u001b[39m", meaning like "A<red>B</red>"
console.log(sliceAnsiString(str, 2, 3)); // -> "\u001b[31mC\u001b[39m", meaning like "<red>C</red>"
const sliceAnsiString = require('slice-ansi-string');
const str = 'A\u001b[31mB\u001b[4mCD\u001b[24m\u001b[39mE'; // Meaning like "A<red>B<underline>CD</underline></red>E"
console.log(sliceAnsiString(str, 1, 3)); // -> "\u001b[31mB\u001b[4mC\u001b[24m\u001b[39m", meaning like "<red>B<underline>C</underline></red>"
str: string
beginSlice: number
endSlice: (string|null|undefined)
chalk.dim.bold('A')
outputs "\u001b[2m\u001b[1mA\u001b[2m\u001b[22m"
, but this library expects "\u001b[2m\u001b[1mA\u001b[22m\u001b[22m"
.chalk.bold.underline.red('A')
returns expected outputs, so it may be a specific problem of dim.bold
.