UNPKG

@tsukiroku/tiny

Version:
64 lines (63 loc) 2.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.objectKindStringify = exports.objectStringify = void 0; const objectStringify = (obj, strW = false) => { if (!obj) return 'NULL'; switch (obj.kind) { case 300 /* ObjectKind.NUMBER */: return obj.value.toString(); case 301 /* ObjectKind.STRING */: return strW ? `"${obj.value}"` : obj.value; case 302 /* ObjectKind.BOOLEAN */: return obj.value ? 'true' : 'false'; case 303 /* ObjectKind.ARRAY */: return `[${obj.value.map((v) => (0, exports.objectStringify)(v, true)).join(', ')}]`; case 304 /* ObjectKind.OBJECT */: return `{ ${[...obj.pairs.entries()] .map(([key, value]) => `${(0, exports.objectStringify)(key, true)}: ${(0, exports.objectStringify)(value, true)}`) .join(', ')} }`; case 305 /* ObjectKind.FUNCTION */: return `func([${obj.parameters.map((m) => m?.kind).join(', ')}])`; case 306 /* ObjectKind.BUILTIN */: return 'builtin'; case 309 /* ObjectKind.NULL */: return 'NULL'; case 310 /* ObjectKind.UNDEFINED */: return 'UNDEFINED'; case 308 /* ObjectKind.ERROR */: return `ERROR: ${obj.message}`; default: return `[Unknown]`; } }; exports.objectStringify = objectStringify; const objectKindStringify = (kind) => { switch (kind) { case 300 /* ObjectKind.NUMBER */: return 'NUMBER'; case 301 /* ObjectKind.STRING */: return 'STRING'; case 302 /* ObjectKind.BOOLEAN */: return 'BOOLEAN'; case 303 /* ObjectKind.ARRAY */: return 'ARRAY'; case 304 /* ObjectKind.OBJECT */: return 'OBJECT'; case 305 /* ObjectKind.FUNCTION */: return 'FUNCTION'; case 306 /* ObjectKind.BUILTIN */: return 'BUILTIN'; case 307 /* ObjectKind.RETURN_VALUE */: return 'RETURN_VALUE'; case 308 /* ObjectKind.ERROR */: return 'ERROR'; case 309 /* ObjectKind.NULL */: return 'NULL'; case 310 /* ObjectKind.UNDEFINED */: return 'UNDEFINED'; default: return 'UNKNOWN'; } }; exports.objectKindStringify = objectKindStringify;