UNPKG

locutus

Version:

Locutus other languages' standard libraries to JavaScript for fun and educational purposes

72 lines (71 loc) 2.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.print_r = print_r; const _phpTypes_ts_1 = require("../_helpers/_phpTypes.js"); const echo_ts_1 = require("../strings/echo.js"); function print_r(array, returnVal) { // discuss at: https://locutus.io/php/print_r/ // parity verified: PHP 8.3 // original by: Michael White (https://getsprink.com) // improved by: Ben Bryan // improved by: Brett Zamir (https://brett-zamir.me) // improved by: Kevin van Zonneveld (https://kvz.io) // input by: Brett Zamir (https://brett-zamir.me) // example 1: print_r(1, true) // returns 1: '1' let output = ''; const padChar = ' '; const padVal = 4; const _repeatChar = function (len, padChar) { let str = ''; for (let i = 0; i < len; i++) { str += padChar; } return str; }; const _formatArray = function (obj, curDepth, padVal, padChar) { if (curDepth > 0) { curDepth++; } const basePad = _repeatChar(padVal * curDepth, padChar); const thickPad = _repeatChar(padVal * (curDepth + 1), padChar); let str = ''; if (typeof obj === 'object' && obj !== null && obj.constructor) { const objectValue = (0, _phpTypes_ts_1.toPhpArrayObject)(obj); str += 'Array\n' + basePad + '(\n'; for (const key in objectValue) { const value = objectValue[key]; if (Array.isArray(value)) { str += thickPad; str += '['; str += key; str += '] => '; str += _formatArray(value, curDepth + 1, padVal, padChar); } else { str += thickPad; str += '['; str += key; str += '] => '; str += value; str += '\n'; } } str += basePad + ')\n'; } else if (obj === null || obj === undefined) { str = ''; } else { // for our "resource" class str = String(obj); } return str; }; output = _formatArray(array, 0, padVal, padChar); if (returnVal !== true) { (0, echo_ts_1.echo)(output); return true; } return output; }