bkc
Version:
:dog: If there are no dogs in Heaven, then when I die I want to go where they went.
104 lines (103 loc) • 3.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const deepclone_1 = require("../util/deepclone");
const error_1 = require("./error");
var INSTANT_COMMANDS;
(function (INSTANT_COMMANDS) {
INSTANT_COMMANDS["LENGTH"] = "len";
INSTANT_COMMANDS["ARRAY"] = "array";
INSTANT_COMMANDS["PUSH"] = "push";
INSTANT_COMMANDS["UNSHIFT"] = "unshift";
INSTANT_COMMANDS["GET"] = "get";
INSTANT_COMMANDS["FIRST_ELEMENT"] = "car";
INSTANT_COMMANDS["REST_ELEMENT"] = "cdr";
INSTANT_COMMANDS["SUM"] = "sum";
})(INSTANT_COMMANDS = exports.INSTANT_COMMANDS || (exports.INSTANT_COMMANDS = {}));
exports.instants = [
{
command: INSTANT_COMMANDS.LENGTH,
func: (value) => {
if (value.length) {
return value.length;
}
throw error_1.error(error_1.ERROR_CODE.INSTANT_FUNCTION_EXECUTE_FAILED);
},
},
{
command: INSTANT_COMMANDS.ARRAY,
func: () => {
return [];
},
},
{
command: INSTANT_COMMANDS.PUSH,
func: (arg) => {
if (typeof arg[0] === 'object' && arg[0].length >= 0) {
const arr = deepclone_1.deepCloneArray(arg[0]);
arr.push(arg[1]);
return arr;
}
throw error_1.error(error_1.ERROR_CODE.INSTANT_FUNCTION_EXECUTE_FAILED);
},
},
{
command: INSTANT_COMMANDS.UNSHIFT,
func: (arg) => {
if (typeof arg[0] === 'object' && arg[0].length >= 0) {
const arr = deepclone_1.deepCloneArray(arg[0]);
arr.unshift(arg[1]);
return arr;
}
throw error_1.error(error_1.ERROR_CODE.INSTANT_FUNCTION_EXECUTE_FAILED);
},
},
{
command: INSTANT_COMMANDS.GET,
func: (arg) => {
try {
if (typeof arg[1] === 'number') {
return arg[0][arg[1]];
}
else {
return arg[0][arg[1]];
}
}
catch (err) {
throw error_1.error(error_1.ERROR_CODE.INSTANT_FUNCTION_EXECUTE_FAILED);
}
},
},
{
command: INSTANT_COMMANDS.FIRST_ELEMENT,
func: (value) => {
if (typeof value === 'object') {
if (value[0]) {
return value[0];
}
}
throw error_1.error(error_1.ERROR_CODE.INSTANT_FUNCTION_EXECUTE_FAILED);
},
},
{
command: INSTANT_COMMANDS.REST_ELEMENT,
func: (value) => {
if (typeof value === 'object' && value.length > 0) {
const arr = deepclone_1.deepCloneArray(value);
arr.shift();
return arr;
}
throw error_1.error(error_1.ERROR_CODE.INSTANT_FUNCTION_EXECUTE_FAILED);
},
},
{
command: INSTANT_COMMANDS.SUM,
func: (value) => {
let count = 0;
for (let i of value) {
count += i;
}
return count;
},
},
];
exports.instantList = exports.instants.map((value) => value.command);