UNPKG

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
"use strict"; 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);