scroll/demo/colors.ts

112 lines
1.9 KiB
JavaScript
Raw Normal View History

2024-07-17 16:23:53 -04:00
/**
* This is a test file and a terminal color table program
*/
// ----------------------------------------------------------------------------
// Display table of the 256 type color console escape codes
// ----------------------------------------------------------------------------
export enum Ground {
Fore = 38,
Back = 48,
}
const code = (
param: any,
suffix: string = '',
): string => {
if (Array.isArray(param)) {
param = param.join(';');
}
return ['\x1b[', param, suffix].join('');
};
const textFormat = (param: any): string => code(param, 'm');
const color256 = (value: number, ground: Ground): string =>
textFormat([ground, 5, value]);
let colorTable = '';
const doubleBreaks = [15, 51, 87, 123, 159, 195, 231, 255];
[
7,
15,
21,
27,
33,
39,
45,
51,
57,
63,
69,
75,
81,
87,
93,
99,
105,
111,
117,
123,
129,
135,
141,
147,
153,
159,
165,
171,
177,
183,
189,
195,
201,
207,
213,
219,
225,
231,
237,
243,
249,
255,
].forEach((line, n, breaks) => {
const start = (n > 0) ? breaks[n - 1] + 1 : 0;
const end = line + 1;
let i = 0;
for (i = start; i < end; i++) {
colorTable += color256(i, Ground.Fore);
colorTable += String(i).padStart(4, ' ').padEnd(5, ' ');
colorTable += textFormat('');
}
colorTable += ' '.repeat(5);
for (i = start; i < end; i++) {
colorTable += color256(i, Ground.Back);
colorTable += String(i).padStart(4, ' ').padEnd(5, ' ');
colorTable += textFormat('');
}
colorTable += '\n';
if (doubleBreaks.includes(line)) {
colorTable += '\n';
}
});
console.log(colorTable);
/**
* Test code for highlighting
*/
const decimal: number[] = [0, 117];
const bigDecimal = 123456789123456789n;
const octal: number[] = [0o15, 0o1];
const bigOctal = 0o777777777777n;
const hexadecimal: number[] = [0x1123, 0x00111];
const bigHex = 0x123456789ABCDEFn;
const binary: number[] = [0b11, 0b0011];
const bigBinary = 0b11101001010101010101n;