@sudoo/marked
Version:
JavaScript & TypeScript code runner in JavaScript, safe with marked territory, asynchronous
59 lines (58 loc) • 2.31 kB
JavaScript
;
/**
* @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;