UNPKG

commanding

Version:

A simple yet practical command-Line application framework, written in TypeScript.

41 lines (40 loc) 1.83 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const lodash_1 = __importDefault(require("lodash")); function rotateArrayBy90(arrays) { return arrays.reduce((rotated, row, rowIndex) => { const newRotated = [...rotated]; row.forEach((column, columnIndex) => { if (!lodash_1.default.has(newRotated, columnIndex)) { newRotated[columnIndex] = Array(arrays.length - 1); } const newColumnIndex = arrays.length - rowIndex - 1; newRotated[columnIndex][newColumnIndex] = column; }); return newRotated; }, []); } exports.rotateArrayBy90 = rotateArrayBy90; function alignColumns(table, padding, paddingChar = ' ', newLineChar = "\n") { const stringifiedTable = table.map(row => row.map(column => `${column}`)); const columnMaxWidths = rotateArrayBy90(stringifiedTable) .map(row => lodash_1.default.max(row.map(column => stripColor(column).length))); const columnPaddingStr = paddingChar.repeat(padding); return stringifiedTable.map(row => row.map((column, columnIndex) => `${column}${paddingChar.repeat(columnMaxWidths[columnIndex] - stripColor(column).length)}`)) .map(row => row.join(columnPaddingStr)) .join(newLineChar); } exports.alignColumns = alignColumns; function marginLeft(content, margin, paddingChar = ' ', newLineChar = "\n") { return content.split(newLineChar) .map(line => `${paddingChar.repeat(margin)}${line}`) .join(newLineChar); } exports.marginLeft = marginLeft; function stripColor(str) { return str.split(/\u001b\[(?:\d*;){0,5}\d*m/g).join(''); } exports.stripColor = stripColor;