UNPKG

cli-block

Version:
188 lines 7.22 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.breakText = exports.truncateText = exports.centerText = exports.stylizeValue = exports.defineValueType = exports.isTrue = exports.isPath = exports.isNull = exports.isBooleanish = exports.isBoolean = exports.isColor = exports.isObject = exports.isArray = exports.isNumeric = exports.isNumber = exports.isString = exports.isUndefined = exports.spacedText = exports.spaces = exports.toStringValue = exports.objectToString = exports.strWidth = void 0; // Logging Helpers const mono_str_width_1 = __importDefault(require("mono-str-width")); const tools_1 = require("@sil/tools"); exports.strWidth = mono_str_width_1.default; const util_1 = require("../util"); const color_1 = require("@sil/color"); const objectToString = (obj) => { let str = ""; Object.keys(obj).forEach((item) => { let value = obj[item]; if (typeof value == "number") value = (0, tools_1.toRoundNumber)(value, 0); str = str + `${(0, util_1.blue)(item)}${value} `; }); return str; }; exports.objectToString = objectToString; const toStringValue = (value) => { if (typeof value == "string") return value; else if (typeof value == "number") return `${value}`; else if (typeof value == "boolean") return `${value ? "true" : "false"}`; else if (value == null) return ""; else if (typeof value == "object") return (0, exports.objectToString)(value); else return value.join(""); }; exports.toStringValue = toStringValue; const spaces = (num, value = null) => { let width = value; if (typeof value !== "number") width = (0, mono_str_width_1.default)((0, exports.toStringValue)(value)); let spaces = []; for (let i = 0; i < (value ? num - width : num); i++) { spaces.push(" "); } return spaces.join(""); }; exports.spaces = spaces; const spacedText = (num, value) => { return `${value} ${(0, exports.spaces)(num, (0, mono_str_width_1.default)((0, exports.toStringValue)(value)) + 1)}`; }; exports.spacedText = spacedText; const ValueType = { STRING: "string", NUMBER: "number", COLOR: "color", ARRAY: "array", OBJECT: "object", BOOLEAN: "boolean", PATH: "path", UNDEFINED: "undefined", NULL: "null", }; const isUndefined = (value) => (!value || value == undefined || value == null) && value !== 0; exports.isUndefined = isUndefined; const isString = (value) => typeof value == "string"; exports.isString = isString; const isNumber = (value) => typeof value == "number" && (value == 0 || ((!(0, exports.isString)(value) || !(0, exports.isArray)(value)) && !isNaN(value))); exports.isNumber = isNumber; const isNumeric = (value) => (0, exports.isNumber)(value) || `${value}` === `${parseFloat(value)}`; exports.isNumeric = isNumeric; const isArray = (value) => Array.isArray(value) && value instanceof Array; exports.isArray = isArray; const isObject = (value) => typeof value == "object" && !(0, exports.isArray)(value) && !(0, exports.isUndefined)(value); exports.isObject = isObject; const isColor = (value) => (0, color_1.isCOLOR)(value); exports.isColor = isColor; const isBoolean = (value) => typeof value == "boolean"; exports.isBoolean = isBoolean; const isBooleanish = (value) => (0, exports.isBoolean)(value) || ((0, exports.isString)(value) && (value.toLowerCase() === "true" || value.toLowerCase() === "false")); exports.isBooleanish = isBooleanish; const isNull = (value) => (value == null || value == "null") && value !== undefined && value !== ""; exports.isNull = isNull; const isPath = (value) => (0, exports.isString)(value) && value.includes("/"); exports.isPath = isPath; const isTrue = (value) => { if ((0, exports.isBoolean)(value)) return !!value; if ((0, exports.isBooleanish)(value) && value.toLowerCase() == "true") return true; return false; }; exports.isTrue = isTrue; const defineValueType = (value) => { if ((0, exports.isNull)(value)) return ValueType.NULL; if ((0, exports.isUndefined)(value)) return ValueType.UNDEFINED; if ((0, exports.isNumeric)(value)) return ValueType.NUMBER; if ((0, exports.isArray)(value)) return ValueType.ARRAY; if ((0, exports.isObject)(value)) return ValueType.OBJECT; if ((0, exports.isBooleanish)(value)) return ValueType.BOOLEAN; if ((0, exports.isPath)(value)) return ValueType.PATH; if ((0, exports.isColor)(value)) return ValueType.COLOR; if ((0, exports.isString)(value)) return ValueType.STRING; }; exports.defineValueType = defineValueType; const stylizeValue = (value) => { switch ((0, exports.defineValueType)(value)) { case ValueType.NULL: return `${(0, util_1.italic)("null")}`; case ValueType.UNDEFINED: return ``; case ValueType.ARRAY: return value.join(", "); case ValueType.OBJECT: return Object.keys(value).join(", "); case ValueType.NUMBER: return `${(0, util_1.yellow)(value)}`; case ValueType.BOOLEAN: return (0, exports.isTrue)(value) ? `${(0, util_1.green)("True")}` : `${(0, util_1.red)("False")}`; case ValueType.PATH: return `${(0, util_1.blue)().italic(value)}`; case ValueType.COLOR: return `${(0, util_1.color)(`▶`, (0, color_1.toHex)(value))} ${value}`; default: case ValueType.STRING: return value; } }; exports.stylizeValue = stylizeValue; const centerText = (value, num) => { let values = []; let isEven = (0, mono_str_width_1.default)(value) % 2 == 0 ? true : false; num = (num - (0, mono_str_width_1.default)(value)) / 2; for (let i = 0; i < num; i++) values.push(" "); values.push(value); for (let i = 0; i < num - (isEven ? 0 : 1); i++) values.push(" "); return values.join(""); }; exports.centerText = centerText; const truncateText = (value, width, affix = "") => { if (typeof value !== "string") return value; if ((0, mono_str_width_1.default)(value) > width) { let valueArray = value.split(""); return valueArray.slice(0, width - affix.length).join("") + affix; } else return value; }; exports.truncateText = truncateText; const breakText = (value, width) => { if (typeof value !== "string") return value; let sentences = []; if ((0, mono_str_width_1.default)(value) > width) { let words = value.split(" "); let sentence = ""; words.forEach((word, i) => { if ((0, mono_str_width_1.default)(sentence + " " + word) < width) { sentence = sentence + " " + word; } else { sentences.push(sentence); sentence = word; } }); return sentences; } else return [value]; }; exports.breakText = breakText; //# sourceMappingURL=helpers.js.map