File indexing completed on 2024-05-12 05:17:32
0001 /* 0002 SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 function dumpValue(value, depth) 0008 { 0009 if (value === undefined || value === null 0010 || typeof value == "boolean" 0011 || typeof value == "number") 0012 { 0013 return value; 0014 } else if (typeof value == "string") { 0015 return value.replace('\r\n', '\n'); 0016 } else if (typeof value == "object") { 0017 if (depth == 0) { 0018 return "[...]"; 0019 } 0020 if (value instanceof ArrayBuffer) { 0021 const view = new DataView(value); 0022 for (let i = 0; i < view.byteLength; ++i) { 0023 const c = view.getUInt8(i); 0024 if (c < 0x20 && c != 0x0A && c != 0x0D) { 0025 return "<binary: " + view.byteLength + " bytes>"; 0026 } 0027 } 0028 return value; 0029 } 0030 if (value.length != undefined) { 0031 var arr = new Array(); 0032 for (var i = 0; i < value.length; ++i) { 0033 arr.push(dumpValue(value[i], depth - 1)); 0034 } 0035 return arr; 0036 } 0037 var obj = new Object(); 0038 var empty = true; 0039 for (var prop in value) { 0040 if (prop == "parent" || prop == "firstChild" || prop == "nextSibling" || value[prop] === undefined || value[prop] === null || typeof value[prop] == "function") { 0041 continue; 0042 } 0043 const v = dumpValue(value[prop], depth - 1); 0044 if (v != undefined) { // ### Qt5 behavior compat, remove with Qt6 0045 obj[prop] = v; 0046 } 0047 if (v) { // ### Qt5 behavior compat, remove with Qt6 0048 empty = false; 0049 } 0050 } 0051 0052 if (empty && Object.keys(obj).length >= 1) { 0053 return undefined; // ### Qt5 behavior compat, remove with Qt6 0054 } 0055 // implicitly convertible (color, date, opaque types, etc) 0056 if (empty) { 0057 let s = value.toString(); 0058 if (s.match(/QVariant.*KCalendarCore::Calendar/)) { // normalize opaque shared pointer handle 0059 return 'KCalendarCore::Calendar'; 0060 } 0061 return value.toString(); 0062 } else { 0063 return obj; 0064 } 0065 } else { 0066 console.log("unhandled value type", typeof value); 0067 } 0068 return value; 0069 } 0070 0071 function dumpArgs(content, node, triggerNode) 0072 { 0073 var res = new Array(); 0074 var wrapper = new Object(); 0075 wrapper.content = dumpValue(content, 6); 0076 res.push(wrapper); 0077 res.push(dumpValue(node, 6)); 0078 res.push({ triggerNodeEqualsNode: triggerNode == node }); 0079 return res; 0080 }