Skip to content

Instantly share code, notes, and snippets.

@maksimr
Last active January 5, 2024 09:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maksimr/9ebf148263d2053ffff6590e00b0173e to your computer and use it in GitHub Desktop.
Save maksimr/9ebf148263d2053ffff6590e00b0173e to your computer and use it in GitHub Desktop.
ansicolor typescript
function ansicolor(str: string, colour:
| 0 // all attributes off
| 1 // bold on
| 4 // underline on
| 5 // blink on
| 21 // bold off
| 24 // underline off
| 25 // blink off
| 30 // bloack foreground
| 31 // red foreground
| 32 // green foreground
| 33 // yellow foreground
| 34 // blue foreground
| 35 // magenta foreground
| 36 // cyan foreground
| 37 // white foreground
| 39 // default foreground
| 40 // black background
| 41 // red background
| 42 // green background
| 43 // yellow background
| 44 // blue background
| 45 // magenta background
| 46 // cyan background
| 47 // white background
| 49 // default background
| 90 // gray foreground
| 91 // light red foreground
| 92 // light green foreground
| 93 // light yellow foreground
| 94 // light blue foreground
| 95 // light magenta foreground
| 96 // light cyan foreground
| 97 // light white foreground
| 100 // gray background
| 101 // light red background
| 102 // light green background
| 103 // light yellow background
| 104 // light blue background
| 105 // light magenta background
| 106 // light cyan background
| 107 // light white background
| 'bold'
| 'underline'
| 'blink'
| 'red'
| 'green'
| 'yellow'
| 'blue'
| 'magenta'
| 'cyan'
| 'white'
| 'default'
| 'gray'
| 'light-red'
| 'light-green'
| 'light-yellow'
| 'light-blue'
| 'light-magenta'
| 'light-cyan'
| 'light-white'
| 'red-background'
| 'green-background'
| 'yellow-background'
| 'blue-background'
| 'magenta-background'
| 'cyan-background'
| 'white-background'
| 'default-background'
| 'gray-background'
| 'light-red-background'
| 'light-green-background'
| 'light-yellow-background'
| 'light-blue-background'
| 'light-magenta-background'
| 'light-cyan-background'
| 'light-white-background'
| number
) {
if (!process.stdout.isTTY) {
return str;
}
switch (colour) {
case 'bold': colour = 1; break;
case 'underline': colour = 4; break;
case 'blink': colour = 5; break;
case 'red': colour = 31; break;
case 'green': colour = 32; break;
case 'yellow': colour = 33; break;
case 'blue': colour = 34; break;
case 'magenta': colour = 35; break;
case 'cyan': colour = 36; break;
case 'white': colour = 37; break;
case 'default': colour = 39; break;
case 'gray': colour = 90; break;
case 'light-red': colour = 91; break;
case 'light-green': colour = 92; break;
case 'light-yellow': colour = 93; break;
case 'light-blue': colour = 94; break;
case 'light-magenta': colour = 95; break;
case 'light-cyan': colour = 96; break;
case 'light-white': colour = 97; break;
case 'red-background': colour = 41; break;
case 'green-background': colour = 42; break;
case 'yellow-background': colour = 43; break;
case 'blue-background': colour = 44; break;
case 'magenta-background': colour = 45; break;
case 'cyan-background': colour = 46; break;
case 'white-background': colour = 47; break;
case 'default-background': colour = 49; break;
case 'gray-background': colour = 100; break;
case 'light-red-background': colour = 101; break;
case 'light-green-background': colour = 102; break;
case 'light-yellow-background': colour = 103; break;
case 'light-blue-background': colour = 104; break;
case 'light-magenta-background': colour = 105; break;
case 'light-cyan-background': colour = 106; break;
case 'light-white-background': colour = 107; break;
}
return `\x1b[${colour}m${str}\x1b[0m`;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment