UNPKG

monaco-editor

Version:
84 lines (81 loc) 2.71 kB
import { getClassName } from '../debugName.js'; import '../debugLocation.js'; import '../../arrays.js'; import '../../event.js'; import '../../lifecycle.js'; /*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ function formatValue(value, availableLen) { switch (typeof value) { case 'number': return '' + value; case 'string': if (value.length + 2 <= availableLen) { return `"${value}"`; } return `"${value.substr(0, availableLen - 7)}"+...`; case 'boolean': return value ? 'true' : 'false'; case 'undefined': return 'undefined'; case 'object': if (value === null) { return 'null'; } if (Array.isArray(value)) { return formatArray(value, availableLen); } return formatObject(value, availableLen); case 'symbol': return value.toString(); case 'function': return `[[Function${value.name ? ' ' + value.name : ''}]]`; default: return '' + value; } } function formatArray(value, availableLen) { let result = '[ '; let first = true; for (const val of value) { if (!first) { result += ', '; } if (result.length - 5 > availableLen) { result += '...'; break; } first = false; result += `${formatValue(val, availableLen - result.length)}`; } result += ' ]'; return result; } function formatObject(value, availableLen) { if (typeof value.toString === 'function' && value.toString !== Object.prototype.toString) { const val = value.toString(); if (val.length <= availableLen) { return val; } return val.substring(0, availableLen - 3) + '...'; } const className = getClassName(value); let result = className ? className + '(' : '{ '; let first = true; for (const [key, val] of Object.entries(value)) { if (!first) { result += ', '; } if (result.length - 5 > availableLen) { result += '...'; break; } first = false; result += `${key}: ${formatValue(val, availableLen - result.length)}`; } result += className ? ')' : ' }'; return result; } export { formatValue };