UNPKG

twing

Version:

First-class Twig engine for Node.js

94 lines (93 loc) 3.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.varDump = exports.isFloat = exports.isBoolean = void 0; const is_traversable_1 = require("./is-traversable"); const iterator_to_hash_1 = require("./iterator-to-hash"); const count_1 = require("./count"); const isBoolean = (candidate) => { return candidate === true || candidate === false; }; exports.isBoolean = isBoolean; const isFloat = (candidate) => { return +candidate === candidate && (!isFinite(candidate) || !!(candidate % 1)); }; exports.isFloat = isFloat; /** * Adapted from https://github.com/kvz/locutus/blob/master/src/php/var/var_dump.js */ const varDump = (...args) => { let padChar = ' '; let padVal = 4; let length = 0; let getInnerVal = function _getInnerVal(val) { let result = ''; if (val === null || typeof val === 'undefined') { result = 'NULL'; } else if (typeof val === 'boolean') { result = 'bool(' + val + ')'; } else if (typeof val === 'number') { if (parseFloat('' + val) === parseInt('' + val, 10)) { result = 'int(' + val + ')'; } else { result = 'float(' + val + ')'; } } else if (typeof val === 'function') { result = 'object(Closure) (0) {}'; } else { result = 'string(' + val.length + ') "' + val + '"'; } return result; }; let formatArray = (obj, curDepth) => { if ((0, is_traversable_1.isTraversable)(obj)) { obj = (0, iterator_to_hash_1.iteratorToHash)(obj); } let baseCount = padVal * (curDepth); let thickCount = padVal * (curDepth + 1); let basePad = padChar.repeat(baseCount); let thickPad = padChar.repeat(thickCount); let str = ''; let val; if (typeof obj === 'object' && obj !== null) { length = (0, count_1.count)(obj); str += 'array(' + length + ') {\n'; for (let key in obj) { let objVal = obj[key]; if ((typeof objVal === 'object') && (objVal !== null) && !(objVal instanceof Date)) { str += thickPad; str += '['; str += key; str += '] =>\n'; str += thickPad; str += formatArray(objVal, curDepth + 1); } else { val = getInnerVal(objVal); str += thickPad; str += '['; str += key; str += '] =>\n'; str += thickPad; str += val; str += '\n'; } } str += basePad + '}\n'; } else { str = getInnerVal(obj) + '\n'; } return str; }; let output = []; for (let arg of args) { output.push(formatArray(arg, 0)); } return output.join(''); }; exports.varDump = varDump;