consolecolor/ts/index.ts

82 lines
1.8 KiB
TypeScript

import * as ansiColors from 'ansi-256-colors';
/**
* all the color names that are available for proper xterm translation
*/
export type TColorName =
| 'black'
| 'blue'
| 'brown'
| 'cyan'
| 'green'
| 'orange'
| 'pink'
| 'red'
| 'white';
export interface IRGB {
r: number;
b: number;
g: number;
}
/**
* the color translator function
*/
let colorTranslator = (colorArg: TColorName): IRGB => {
switch (colorArg) {
case 'black':
return { r: 0, g: 0, b: 0 };
case 'blue':
return { r: 0, g: 2, b: 5 };
case 'brown':
return { r: 1, g: 0, b: 0 };
case 'cyan':
return { r: 2, g: 4, b: 4 };
case 'green':
return { r: 2, g: 4, b: 1 };
case 'orange':
return { r: 5, g: 3, b: 1 };
case 'pink':
return { r: 3, g: 2, b: 4 };
case 'red':
return { r: 5, g: 0, b: 0 };
case 'white':
return { r: 5, g: 5, b: 5 };
default:
return { r: 5, g: 5, b: 5 };
}
};
/**
* colors the font of a string
*/
let coloredFont = (stringArg: string, colorArg: TColorName) => {
let rgbCode: IRGB = colorTranslator(colorArg);
return ansiColors.fg.getRgb(rgbCode.r, rgbCode.g, rgbCode.b) + stringArg;
};
/**
* colors the back of a string
*/
let coloredBackground = (stringArg: string, colorArg: TColorName) => {
let rgbCode = colorTranslator(colorArg);
return ansiColors.bg.getRgb(rgbCode.r, rgbCode.g, rgbCode.b) + stringArg;
};
/**
* color a string with xterm
*/
export let coloredString = (
stringArg: string,
colorFontArg: TColorName,
colorBackgroundArg?: TColorName
): string => {
let returnString = coloredFont(stringArg, colorFontArg);
if (colorBackgroundArg) {
returnString = coloredBackground(returnString, colorBackgroundArg);
}
returnString = returnString + ansiColors.reset;
return returnString;
};