UNPKG

@sudoo/marked

Version:

JavaScript & TypeScript code runner in JavaScript, safe with marked territory, asynchronous

59 lines (58 loc) 2.31 kB
"use strict"; /** * @author WMXPY * @namespace Parse * @description Sand To Native */ Object.defineProperty(exports, "__esModule", { value: true }); exports.extractSandToNative = void 0; const native_class_1 = require("../variable/native-class/native-class"); const native_class_instance_1 = require("../variable/native-class/native-class-instance"); const sand_class_1 = require("../variable/sand-class/sand-class"); const sand_class_instance_1 = require("../variable/sand-class/sand-class-instance"); const sand_function_1 = require("../variable/sand-function/sand-function"); const sand_list_1 = require("../variable/sand-list"); const bigint_1 = require("../variable/sand-literal/bigint"); const regexp_1 = require("../variable/sand-literal/regexp"); const sand_map_1 = require("../variable/sand-map"); const extractSandToNative = (target) => { if (target instanceof bigint_1.SandLiteralBigInt) { return target.toNativeBigInt(); } if (target instanceof regexp_1.SandLiteralRegExp) { return target.toNativeRegExp(); } if (target instanceof native_class_1.MarkedNativeClass) { return (0, exports.extractSandToNative)(target.toNative()); } if (target instanceof native_class_instance_1.MarkedNativeClassInstance) { return (0, exports.extractSandToNative)(target.toNative()); } if (target instanceof sand_class_1.SandClass) { return (0, exports.extractSandToNative)(target.toNative()); } if (target instanceof sand_class_instance_1.SandClassInstance) { return (0, exports.extractSandToNative)(target.toNative()); } if (target instanceof sand_function_1.SandFunction) { return target.execute.bind(target); } if (target instanceof sand_list_1.SandList) { const list = target.list; const result = []; for (const element of list) { result.push((0, exports.extractSandToNative)(element)); } return result; } if (target instanceof sand_map_1.SandMap) { const keys = target.keys(); const result = {}; for (const key of keys) { result[key] = (0, exports.extractSandToNative)(target.get(key)); } return result; } return target; }; exports.extractSandToNative = extractSandToNative;