UNPKG

@cortex-js/compute-engine

Version:

Symbolic computing and numeric evaluations for JavaScript and Node.js

142 lines (138 loc) 5.45 kB
/** MathJSON 0.30.2 */ (function(global,factory){typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'],factory):(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.MathJson = {}));})(this, (function (exports) { 'use strict'; var MathJson = (() => { var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/math-json.ts var math_json_exports = {}; __export(math_json_exports, { dictionaryFromExpression: () => dictionaryFromExpression, isFunctionObject: () => isFunctionObject, isStringObject: () => isStringObject, isSymbolObject: () => isSymbolObject, mapArgs: () => mapArgs, operand: () => operand, operator: () => operator, stringValue: () => stringValue, symbol: () => symbol, version: () => version }); // src/math-json/utils.ts function isSymbolObject(expr) { return expr !== null && typeof expr === "object" && "sym" in expr; } function isStringObject(expr) { return expr !== null && typeof expr === "object" && "str" in expr; } function isDictionaryObject(expr) { return expr !== null && typeof expr === "object" && "dict" in expr && typeof expr.dict === "object" && !Array.isArray(expr.dict) && expr.dict !== null; } function isFunctionObject(expr) { return expr !== null && typeof expr === "object" && "fn" in expr && Array.isArray(expr.fn) && expr.fn.length > 0 && typeof expr.fn[0] === "string"; } function stringValue(expr) { if (expr === null || expr === void 0) return null; if (typeof expr === "object" && "str" in expr) return expr.str; if (typeof expr !== "string") return null; if (expr.length >= 2 && expr.at(0) === "'" && expr.at(-1) === "'") return expr.substring(1, expr.length - 1); if (matchesNumber(expr) || matchesSymbol(expr)) return null; return expr; } function operator(expr) { if (Array.isArray(expr)) return expr[0]; if (expr === null || expr === void 0) return ""; if (isFunctionObject(expr)) return expr.fn[0]; return ""; } function operands(expr) { if (Array.isArray(expr)) return expr.slice(1); if (expr !== void 0 && isFunctionObject(expr)) return expr.fn.slice(1); return []; } function operand(expr, n) { if (Array.isArray(expr)) return expr[n] ?? null; if (expr === null || !isFunctionObject(expr)) return null; return expr.fn[n] ?? null; } function nops(expr) { if (expr === null || expr === void 0) return 0; if (Array.isArray(expr)) return Math.max(0, expr.length - 1); if (isFunctionObject(expr)) return Math.max(0, expr.fn.length - 1); return 0; } function symbol(expr) { if (typeof expr === "string" && matchesSymbol(expr)) { if (expr.length >= 2 && expr.at(0) === "`" && expr.at(-1) === "`") return expr.slice(1, -1); return expr; } if (expr === null || expr === void 0) return null; if (isSymbolObject(expr)) return expr.sym; return null; } function keyValuePair(expr) { const h = operator(expr); if (h === "KeyValuePair" || h === "Tuple" || h === "Pair") { const [k, v] = operands(expr); const key = stringValue(k); if (!key) return null; return [key, v ?? "Nothing"]; } return null; } function dictionaryFromExpression(expr) { if (expr === null) return null; if (isDictionaryObject(expr)) return expr; const kv = keyValuePair(expr); if (kv) return { [kv[0]]: kv[1] }; if (operator(expr) === "Dictionary") { const result = {}; const ops = operands(expr); for (let i = 1; i < nops(expr); i++) { const kv2 = keyValuePair(ops[i]); if (kv2) result[kv2[0]] = kv2[1]; } return result; } return null; } function mapArgs(expr, fn) { let args = null; if (Array.isArray(expr)) args = expr; if (isFunctionObject(expr)) args = expr.fn; if (args === null) return []; let i = 1; const result = []; while (i < args.length) { result.push(fn(args[i])); i += 1; } return result; } function matchesNumber(s) { return /^(nan|oo|\+oo|-oo|infinity|\+infinity|-infinity)$/i.test(s) || /^[+-]?(0|[1-9][0-9]*)(\.[0-9]+)?(\([0-9]+\))?([eE][+-]?[0-9]+)?$/.test(s); } function matchesSymbol(s) { return /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s) || s.length >= 2 && s[0] === "`" && s[s.length - 1] === "`"; } // src/math-json.ts var version = "0.30.2"; return __toCommonJS(math_json_exports); })(); Object.assign(exports, MathJson); Object.defineProperty(exports, '__esModule', { value: true });}));