locutus 2.0.29 → 2.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_util/util.js +15 -12
- package/_util/util.js.map +1 -1
- package/package.json +16 -14
- package/php/array/array_multisort.js +2 -0
- package/php/array/array_multisort.js.map +1 -1
- package/php/datetime/strtotime.js +25 -1
- package/php/datetime/strtotime.js.map +1 -1
- package/php/exec/escapeshellarg.js +16 -4
- package/php/exec/escapeshellarg.js.map +1 -1
- package/php/math/fmod.js +4 -1
- package/php/math/fmod.js.map +1 -1
- package/php/strings/bin2hex.js +27 -9
- package/php/strings/bin2hex.js.map +1 -1
- package/php/var/serialize.mocha.js +14 -0
- package/php/var/serialize.mocha.js.map +1 -0
- package/php/var/var_dump.js +18 -5
- package/php/var/var_dump.js.map +1 -1
package/php/var/var_dump.js
CHANGED
|
@@ -2,15 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
|
4
4
|
|
|
5
|
+
var visitedObjects = new Map(); // Initialize a map to track visited objects
|
|
6
|
+
|
|
5
7
|
module.exports = function var_dump() {
|
|
6
8
|
// discuss at: https://locutus.io/php/var_dump/
|
|
7
9
|
// original by: Brett Zamir (https://brett-zamir.me)
|
|
8
10
|
// improved by: Zahlii
|
|
9
11
|
// improved by: Brett Zamir (https://brett-zamir.me)
|
|
10
12
|
// note 1: For returning a string, use var_export() with the second argument set to true
|
|
11
|
-
// test: skip-all
|
|
12
13
|
// example 1: var_dump(1)
|
|
13
14
|
// returns 1: 'int(1)'
|
|
15
|
+
// example 2: const simpleCircular = {}
|
|
16
|
+
// example 2: simpleCircular.self = simpleCircular
|
|
17
|
+
// example 2: var_dump(simpleCircular)
|
|
18
|
+
// returns 2: 'array(1) {\n [self] =>\n Circular Reference Detected\n}\n'
|
|
14
19
|
|
|
15
20
|
var echo = require('../strings/echo');
|
|
16
21
|
var output = '';
|
|
@@ -111,7 +116,7 @@ module.exports = function var_dump() {
|
|
|
111
116
|
return ret;
|
|
112
117
|
};
|
|
113
118
|
|
|
114
|
-
var _formatArray = function _formatArray(obj, curDepth, padVal, padChar) {
|
|
119
|
+
var _formatArray = function _formatArray(obj, curDepth, padVal, padChar, visitedObjects) {
|
|
115
120
|
if (curDepth > 0) {
|
|
116
121
|
curDepth++;
|
|
117
122
|
}
|
|
@@ -122,6 +127,14 @@ module.exports = function var_dump() {
|
|
|
122
127
|
var val = '';
|
|
123
128
|
|
|
124
129
|
if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && obj !== null) {
|
|
130
|
+
if (visitedObjects.has(obj)) {
|
|
131
|
+
// Circular reference detected, return a placeholder or a message
|
|
132
|
+
return 'Circular Reference Detected\n';
|
|
133
|
+
} else {
|
|
134
|
+
// Mark this object as visited by adding it to the map
|
|
135
|
+
visitedObjects.set(obj, true);
|
|
136
|
+
}
|
|
137
|
+
|
|
125
138
|
if (obj.constructor && _getFuncName(obj.constructor) === 'LOCUTUS_Resource') {
|
|
126
139
|
return obj.var_dump();
|
|
127
140
|
}
|
|
@@ -140,7 +153,7 @@ module.exports = function var_dump() {
|
|
|
140
153
|
str += key;
|
|
141
154
|
str += '] =>\n';
|
|
142
155
|
str += thickPad;
|
|
143
|
-
str += _formatArray(objVal, curDepth + 1, padVal, padChar);
|
|
156
|
+
str += _formatArray(objVal, curDepth + 1, padVal, padChar, visitedObjects);
|
|
144
157
|
} else {
|
|
145
158
|
val = _getInnerVal(objVal, thickPad);
|
|
146
159
|
str += thickPad;
|
|
@@ -159,9 +172,9 @@ module.exports = function var_dump() {
|
|
|
159
172
|
return str;
|
|
160
173
|
};
|
|
161
174
|
|
|
162
|
-
output = _formatArray(arguments[0], 0, padVal, padChar);
|
|
175
|
+
output = _formatArray(arguments[0], 0, padVal, padChar, visitedObjects);
|
|
163
176
|
for (i = 1; i < arguments.length; i++) {
|
|
164
|
-
output += '\n' + _formatArray(arguments[i], 0, padVal, padChar);
|
|
177
|
+
output += '\n' + _formatArray(arguments[i], 0, padVal, padChar, visitedObjects);
|
|
165
178
|
}
|
|
166
179
|
|
|
167
180
|
echo(output);
|
package/php/var/var_dump.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/php/var/var_dump.js"],"names":["module","exports","var_dump","echo","require","output","padChar","padVal","lgth","i","_getFuncName","fn","name","exec","_repeatChar","len","str","_getInnerVal","val","thickPad","ret","length","parseFloat","parseInt","funcLines","toString","split","fll","Date","RegExp","nodeName","nodeType","namespaceURI","nodeValue","_formatArray","obj","curDepth","basePad","constructor","someProp","hasOwnProperty","key","objVal","arguments"],"mappings":";;;;AAAAA,OAAOC,OAAP,GAAiB,SAASC,QAAT,GAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,OAAOC,QAAQ,iBAAR,CAAb;AACA,MAAIC,SAAS,EAAb;AACA,MAAMC,UAAU,GAAhB;AACA,MAAMC,SAAS,CAAf;AACA,MAAIC,OAAO,CAAX;AACA,MAAIC,IAAI,CAAR;;AAEA,MAAMC,eAAe,SAAfA,YAAe,CAAUC,EAAV,EAAc;AACjC,QAAMC,OAAO,8BAA8BC,IAA9B,CAAmCF,EAAnC,CAAb;AACA,QAAI,CAACC,IAAL,EAAW;AACT,aAAO,aAAP;AACD;AACD,WAAOA,KAAK,CAAL,CAAP;AACD,GAND;;AAQA,MAAME,cAAc,SAAdA,WAAc,CAAUC,GAAV,EAAeT,OAAf,EAAwB;AAC1C,QAAIU,MAAM,EAAV;AACA,SAAK,IAAIP,KAAI,CAAb,EAAgBA,KAAIM,GAApB,EAAyBN,IAAzB,EAA8B;AAC5BO,aAAOV,OAAP;AACD;AACD,WAAOU,GAAP;AACD,GAND;AAOA,MAAMC,eAAe,SAAfA,YAAe,CAAUC,GAAV,EAAeC,QAAf,EAAyB;AAC5C,QAAIC,MAAM,EAAV;AACA,QAAIF,QAAQ,IAAZ,EAAkB;AAChBE,YAAM,MAAN;AACD,KAFD,MAEO,IAAI,OAAOF,GAAP,KAAe,SAAnB,EAA8B;AACnCE,YAAM,UAAUF,GAAV,GAAgB,GAAtB;AACD,KAFM,MAEA,IAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AAClCE,YAAM,YAAYF,IAAIG,MAAhB,GAAyB,KAAzB,GAAiCH,GAAjC,GAAuC,GAA7C;AACD,KAFM,MAEA,IAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AAClC,UAAII,WAAWJ,GAAX,MAAoBK,SAASL,GAAT,EAAc,EAAd,CAAxB,EAA2C;AACzCE,cAAM,SAASF,GAAT,GAAe,GAArB;AACD,OAFD,MAEO;AACLE,cAAM,WAAWF,GAAX,GAAiB,GAAvB;AACD;AACF,KANM,MAMA,IAAI,OAAOA,GAAP,KAAe,WAAnB,EAAgC;AACrC;AACA;AACAE,YAAM,WAAN;AACD,KAJM,MAIA,IAAI,OAAOF,GAAP,KAAe,UAAnB,EAA+B;AACpC,UAAMM,YAAYN,IAAIO,QAAJ,GAAeC,KAAf,CAAqB,IAArB,CAAlB;AACAN,YAAM,EAAN;AACA,WAAK,IAAIX,MAAI,CAAR,EAAWkB,MAAMH,UAAUH,MAAhC,EAAwCZ,MAAIkB,GAA5C,EAAiDlB,KAAjD,EAAsD;AACpDW,eAAO,CAACX,QAAM,CAAN,GAAU,OAAOU,QAAjB,GAA4B,EAA7B,IAAmCK,UAAUf,GAAV,CAA1C;AACD;AACF,KANM,MAMA,IAAIS,eAAeU,IAAnB,EAAyB;AAC9BR,YAAM,UAAUF,GAAV,GAAgB,GAAtB;AACD,KAFM,MAEA,IAAIA,eAAeW,MAAnB,EAA2B;AAChCT,YAAM,YAAYF,GAAZ,GAAkB,GAAxB;AACD,KAFM,MAEA,IAAIA,IAAIY,QAAR,EAAkB;AACvB;AACA,cAAQZ,IAAIa,QAAZ;AACE,aAAK,CAAL;AACE,cAAI,OAAOb,IAAIc,YAAX,KAA4B,WAA5B,IAA2Cd,IAAIc,YAAJ,KAAqB,+BAApE,EAAqG;AACnG;AACAZ,kBAAM,kBAAkBF,IAAIY,QAAtB,GAAiC,IAAvC;AACD,WAHD,MAGO;AACLV,kBAAM,kBAAkBF,IAAIY,QAAtB,GAAiC,IAAvC;AACD;AACD;AACF,aAAK,CAAL;AACEV,gBAAM,oBAAoBF,IAAIY,QAAxB,GAAmC,GAAzC;AACA;AACF,aAAK,CAAL;AACEV,gBAAM,eAAeF,IAAIe,SAAnB,GAA+B,GAArC;AACA;AACF,aAAK,CAAL;AACEb,gBAAM,wBAAwBF,IAAIe,SAA5B,GAAwC,GAA9C;AACA;AACF,aAAK,CAAL;AACEb,gBAAM,uBAAN;AACA;AACF,aAAK,CAAL;AACEA,gBAAM,aAAN;AACA;AACF,aAAK,CAAL;AACEA,gBAAM,iCAAiCF,IAAIY,QAArC,GAAgD,GAAhD,GAAsDZ,IAAIe,SAA1D,GAAsE,GAA5E;AACA;AACF,aAAK,CAAL;AACEb,gBAAM,kBAAkBF,IAAIe,SAAtB,GAAkC,GAAxC;AACA;AACF,aAAK,CAAL;AACEb,gBAAM,eAAN;AACA;AACF,aAAK,EAAL;AACEA,gBAAM,oBAAN;AACA;AACF,aAAK,EAAL;AACEA,gBAAM,wBAAN;AACA;AACF,aAAK,EAAL;AACEA,gBAAM,eAAN;AACA;AAzCJ;AA2CD;AACD,WAAOA,GAAP;AACD,GA3ED;;AA6EA,MAAMc,eAAe,SAAfA,YAAe,CAAUC,GAAV,EAAeC,QAAf,EAAyB7B,MAAzB,EAAiCD,OAAjC,EAA0C;AAC7D,QAAI8B,WAAW,CAAf,EAAkB;AAChBA;AACD;;AAED,QAAMC,UAAUvB,YAAYP,UAAU6B,WAAW,CAArB,CAAZ,EAAqC9B,OAArC,CAAhB;AACA,QAAMa,WAAWL,YAAYP,UAAU6B,WAAW,CAArB,CAAZ,EAAqC9B,OAArC,CAAjB;AACA,QAAIU,MAAM,EAAV;AACA,QAAIE,MAAM,EAAV;;AAEA,QAAI,QAAOiB,GAAP,yCAAOA,GAAP,OAAe,QAAf,IAA2BA,QAAQ,IAAvC,EAA6C;AAC3C,UAAIA,IAAIG,WAAJ,IAAmB5B,aAAayB,IAAIG,WAAjB,MAAkC,kBAAzD,EAA6E;AAC3E,eAAOH,IAAIjC,QAAJ,EAAP;AACD;AACDM,aAAO,CAAP;AACA,WAAK,IAAM+B,QAAX,IAAuBJ,GAAvB,EAA4B;AAC1B,YAAIA,IAAIK,cAAJ,CAAmBD,QAAnB,CAAJ,EAAkC;AAChC/B;AACD;AACF;AACDQ,aAAO,WAAWR,IAAX,GAAkB,OAAzB;AACA,WAAK,IAAMiC,GAAX,IAAkBN,GAAlB,EAAuB;AACrB,YAAMO,SAASP,IAAIM,GAAJ,CAAf;AACA,YACE,QAAOC,MAAP,yCAAOA,MAAP,OAAkB,QAAlB,IACAA,WAAW,IADX,IAEA,EAAEA,kBAAkBd,IAApB,CAFA,IAGA,EAAEc,kBAAkBb,MAApB,CAHA,IAIA,CAACa,OAAOZ,QALV,EAME;AACAd,iBAAOG,QAAP;AACAH,iBAAO,GAAP;AACAA,iBAAOyB,GAAP;AACAzB,iBAAO,QAAP;AACAA,iBAAOG,QAAP;AACAH,iBAAOkB,aAAaQ,MAAb,EAAqBN,WAAW,CAAhC,EAAmC7B,MAAnC,EAA2CD,OAA3C,CAAP;AACD,SAbD,MAaO;AACLY,gBAAMD,aAAayB,MAAb,EAAqBvB,QAArB,CAAN;AACAH,iBAAOG,QAAP;AACAH,iBAAO,GAAP;AACAA,iBAAOyB,GAAP;AACAzB,iBAAO,QAAP;AACAA,iBAAOG,QAAP;AACAH,iBAAOE,GAAP;AACAF,iBAAO,IAAP;AACD;AACF;AACDA,aAAOqB,UAAU,KAAjB;AACD,KAtCD,MAsCO;AACLrB,YAAMC,aAAakB,GAAb,EAAkBhB,QAAlB,CAAN;AACD;AACD,WAAOH,GAAP;AACD,GApDD;;AAsDAX,WAAS6B,aAAaS,UAAU,CAAV,CAAb,EAA2B,CAA3B,EAA8BpC,MAA9B,EAAsCD,OAAtC,CAAT;AACA,OAAKG,IAAI,CAAT,EAAYA,IAAIkC,UAAUtB,MAA1B,EAAkCZ,GAAlC,EAAuC;AACrCJ,cAAU,OAAO6B,aAAaS,UAAUlC,CAAV,CAAb,EAA2B,CAA3B,EAA8BF,MAA9B,EAAsCD,OAAtC,CAAjB;AACD;;AAEDH,OAAKE,MAAL;;AAEA;AACA,SAAOA,MAAP;AACD,CA5KD","file":"var_dump.js","sourcesContent":["module.exports = function var_dump() {\n // discuss at: https://locutus.io/php/var_dump/\n // original by: Brett Zamir (https://brett-zamir.me)\n // improved by: Zahlii\n // improved by: Brett Zamir (https://brett-zamir.me)\n // note 1: For returning a string, use var_export() with the second argument set to true\n // test: skip-all\n // example 1: var_dump(1)\n // returns 1: 'int(1)'\n\n const echo = require('../strings/echo')\n let output = ''\n const padChar = ' '\n const padVal = 4\n let lgth = 0\n let i = 0\n\n const _getFuncName = function (fn) {\n const name = /\\W*function\\s+([\\w$]+)\\s*\\(/.exec(fn)\n if (!name) {\n return '(Anonymous)'\n }\n return name[1]\n }\n\n const _repeatChar = function (len, padChar) {\n let str = ''\n for (let i = 0; i < len; i++) {\n str += padChar\n }\n return str\n }\n const _getInnerVal = function (val, thickPad) {\n let ret = ''\n if (val === null) {\n ret = 'NULL'\n } else if (typeof val === 'boolean') {\n ret = 'bool(' + val + ')'\n } else if (typeof val === 'string') {\n ret = 'string(' + val.length + ') \"' + val + '\"'\n } else if (typeof val === 'number') {\n if (parseFloat(val) === parseInt(val, 10)) {\n ret = 'int(' + val + ')'\n } else {\n ret = 'float(' + val + ')'\n }\n } else if (typeof val === 'undefined') {\n // The remaining are not PHP behavior because these values\n // only exist in this exact form in JavaScript\n ret = 'undefined'\n } else if (typeof val === 'function') {\n const funcLines = val.toString().split('\\n')\n ret = ''\n for (let i = 0, fll = funcLines.length; i < fll; i++) {\n ret += (i !== 0 ? '\\n' + thickPad : '') + funcLines[i]\n }\n } else if (val instanceof Date) {\n ret = 'Date(' + val + ')'\n } else if (val instanceof RegExp) {\n ret = 'RegExp(' + val + ')'\n } else if (val.nodeName) {\n // Different than PHP's DOMElement\n switch (val.nodeType) {\n case 1:\n if (typeof val.namespaceURI === 'undefined' || val.namespaceURI === 'https://www.w3.org/1999/xhtml') {\n // Undefined namespace could be plain XML, but namespaceURI not widely supported\n ret = 'HTMLElement(\"' + val.nodeName + '\")'\n } else {\n ret = 'XML Element(\"' + val.nodeName + '\")'\n }\n break\n case 2:\n ret = 'ATTRIBUTE_NODE(' + val.nodeName + ')'\n break\n case 3:\n ret = 'TEXT_NODE(' + val.nodeValue + ')'\n break\n case 4:\n ret = 'CDATA_SECTION_NODE(' + val.nodeValue + ')'\n break\n case 5:\n ret = 'ENTITY_REFERENCE_NODE'\n break\n case 6:\n ret = 'ENTITY_NODE'\n break\n case 7:\n ret = 'PROCESSING_INSTRUCTION_NODE(' + val.nodeName + ':' + val.nodeValue + ')'\n break\n case 8:\n ret = 'COMMENT_NODE(' + val.nodeValue + ')'\n break\n case 9:\n ret = 'DOCUMENT_NODE'\n break\n case 10:\n ret = 'DOCUMENT_TYPE_NODE'\n break\n case 11:\n ret = 'DOCUMENT_FRAGMENT_NODE'\n break\n case 12:\n ret = 'NOTATION_NODE'\n break\n }\n }\n return ret\n }\n\n const _formatArray = function (obj, curDepth, padVal, padChar) {\n if (curDepth > 0) {\n curDepth++\n }\n\n const basePad = _repeatChar(padVal * (curDepth - 1), padChar)\n const thickPad = _repeatChar(padVal * (curDepth + 1), padChar)\n let str = ''\n let val = ''\n\n if (typeof obj === 'object' && obj !== null) {\n if (obj.constructor && _getFuncName(obj.constructor) === 'LOCUTUS_Resource') {\n return obj.var_dump()\n }\n lgth = 0\n for (const someProp in obj) {\n if (obj.hasOwnProperty(someProp)) {\n lgth++\n }\n }\n str += 'array(' + lgth + ') {\\n'\n for (const key in obj) {\n const objVal = obj[key]\n if (\n typeof objVal === 'object' &&\n objVal !== null &&\n !(objVal instanceof Date) &&\n !(objVal instanceof RegExp) &&\n !objVal.nodeName\n ) {\n str += thickPad\n str += '['\n str += key\n str += '] =>\\n'\n str += thickPad\n str += _formatArray(objVal, curDepth + 1, padVal, padChar)\n } else {\n val = _getInnerVal(objVal, thickPad)\n str += thickPad\n str += '['\n str += key\n str += '] =>\\n'\n str += thickPad\n str += val\n str += '\\n'\n }\n }\n str += basePad + '}\\n'\n } else {\n str = _getInnerVal(obj, thickPad)\n }\n return str\n }\n\n output = _formatArray(arguments[0], 0, padVal, padChar)\n for (i = 1; i < arguments.length; i++) {\n output += '\\n' + _formatArray(arguments[i], 0, padVal, padChar)\n }\n\n echo(output)\n\n // Not how PHP does it, but helps us test:\n return output\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/php/var/var_dump.js"],"names":["visitedObjects","Map","module","exports","var_dump","echo","require","output","padChar","padVal","lgth","i","_getFuncName","fn","name","exec","_repeatChar","len","str","_getInnerVal","val","thickPad","ret","length","parseFloat","parseInt","funcLines","toString","split","fll","Date","RegExp","nodeName","nodeType","namespaceURI","nodeValue","_formatArray","obj","curDepth","basePad","has","set","constructor","someProp","hasOwnProperty","key","objVal","arguments"],"mappings":"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","file":"var_dump.js","sourcesContent":["const visitedObjects = new Map() // Initialize a map to track visited objects\n\nmodule.exports = function var_dump() {\n // discuss at: https://locutus.io/php/var_dump/\n // original by: Brett Zamir (https://brett-zamir.me)\n // improved by: Zahlii\n // improved by: Brett Zamir (https://brett-zamir.me)\n // note 1: For returning a string, use var_export() with the second argument set to true\n // example 1: var_dump(1)\n // returns 1: 'int(1)'\n // example 2: const simpleCircular = {}\n // example 2: simpleCircular.self = simpleCircular\n // example 2: var_dump(simpleCircular)\n // returns 2: 'array(1) {\\n [self] =>\\n Circular Reference Detected\\n}\\n'\n\n const echo = require('../strings/echo')\n let output = ''\n const padChar = ' '\n const padVal = 4\n let lgth = 0\n let i = 0\n\n const _getFuncName = function (fn) {\n const name = /\\W*function\\s+([\\w$]+)\\s*\\(/.exec(fn)\n if (!name) {\n return '(Anonymous)'\n }\n return name[1]\n }\n\n const _repeatChar = function (len, padChar) {\n let str = ''\n for (let i = 0; i < len; i++) {\n str += padChar\n }\n return str\n }\n const _getInnerVal = function (val, thickPad) {\n let ret = ''\n if (val === null) {\n ret = 'NULL'\n } else if (typeof val === 'boolean') {\n ret = 'bool(' + val + ')'\n } else if (typeof val === 'string') {\n ret = 'string(' + val.length + ') \"' + val + '\"'\n } else if (typeof val === 'number') {\n if (parseFloat(val) === parseInt(val, 10)) {\n ret = 'int(' + val + ')'\n } else {\n ret = 'float(' + val + ')'\n }\n } else if (typeof val === 'undefined') {\n // The remaining are not PHP behavior because these values\n // only exist in this exact form in JavaScript\n ret = 'undefined'\n } else if (typeof val === 'function') {\n const funcLines = val.toString().split('\\n')\n ret = ''\n for (let i = 0, fll = funcLines.length; i < fll; i++) {\n ret += (i !== 0 ? '\\n' + thickPad : '') + funcLines[i]\n }\n } else if (val instanceof Date) {\n ret = 'Date(' + val + ')'\n } else if (val instanceof RegExp) {\n ret = 'RegExp(' + val + ')'\n } else if (val.nodeName) {\n // Different than PHP's DOMElement\n switch (val.nodeType) {\n case 1:\n if (typeof val.namespaceURI === 'undefined' || val.namespaceURI === 'https://www.w3.org/1999/xhtml') {\n // Undefined namespace could be plain XML, but namespaceURI not widely supported\n ret = 'HTMLElement(\"' + val.nodeName + '\")'\n } else {\n ret = 'XML Element(\"' + val.nodeName + '\")'\n }\n break\n case 2:\n ret = 'ATTRIBUTE_NODE(' + val.nodeName + ')'\n break\n case 3:\n ret = 'TEXT_NODE(' + val.nodeValue + ')'\n break\n case 4:\n ret = 'CDATA_SECTION_NODE(' + val.nodeValue + ')'\n break\n case 5:\n ret = 'ENTITY_REFERENCE_NODE'\n break\n case 6:\n ret = 'ENTITY_NODE'\n break\n case 7:\n ret = 'PROCESSING_INSTRUCTION_NODE(' + val.nodeName + ':' + val.nodeValue + ')'\n break\n case 8:\n ret = 'COMMENT_NODE(' + val.nodeValue + ')'\n break\n case 9:\n ret = 'DOCUMENT_NODE'\n break\n case 10:\n ret = 'DOCUMENT_TYPE_NODE'\n break\n case 11:\n ret = 'DOCUMENT_FRAGMENT_NODE'\n break\n case 12:\n ret = 'NOTATION_NODE'\n break\n }\n }\n return ret\n }\n\n const _formatArray = function (obj, curDepth, padVal, padChar, visitedObjects) {\n if (curDepth > 0) {\n curDepth++\n }\n\n const basePad = _repeatChar(padVal * (curDepth - 1), padChar)\n const thickPad = _repeatChar(padVal * (curDepth + 1), padChar)\n let str = ''\n let val = ''\n\n if (typeof obj === 'object' && obj !== null) {\n if (visitedObjects.has(obj)) {\n // Circular reference detected, return a placeholder or a message\n return 'Circular Reference Detected\\n'\n } else {\n // Mark this object as visited by adding it to the map\n visitedObjects.set(obj, true)\n }\n\n if (obj.constructor && _getFuncName(obj.constructor) === 'LOCUTUS_Resource') {\n return obj.var_dump()\n }\n lgth = 0\n for (const someProp in obj) {\n if (obj.hasOwnProperty(someProp)) {\n lgth++\n }\n }\n str += 'array(' + lgth + ') {\\n'\n for (const key in obj) {\n const objVal = obj[key]\n if (\n typeof objVal === 'object' &&\n objVal !== null &&\n !(objVal instanceof Date) &&\n !(objVal instanceof RegExp) &&\n !objVal.nodeName\n ) {\n str += thickPad\n str += '['\n str += key\n str += '] =>\\n'\n str += thickPad\n str += _formatArray(objVal, curDepth + 1, padVal, padChar, visitedObjects)\n } else {\n val = _getInnerVal(objVal, thickPad)\n str += thickPad\n str += '['\n str += key\n str += '] =>\\n'\n str += thickPad\n str += val\n str += '\\n'\n }\n }\n str += basePad + '}\\n'\n } else {\n str = _getInnerVal(obj, thickPad)\n }\n return str\n }\n\n output = _formatArray(arguments[0], 0, padVal, padChar, visitedObjects)\n for (i = 1; i < arguments.length; i++) {\n output += '\\n' + _formatArray(arguments[i], 0, padVal, padChar, visitedObjects)\n }\n\n echo(output)\n\n // Not how PHP does it, but helps us test:\n return output\n}\n"]}
|