simple-squiggle/node_modules/mathjs/lib/esm/utils/scope.js

26 lines
880 B
JavaScript

import { createEmptyMap, assign } from './map.js';
/**
* Create a new scope which can access the parent scope,
* but does not affect it when written. This is suitable for variable definitions
* within a block node, or function definition.
*
* If parent scope has a createSubScope method, it delegates to that. Otherwise,
* creates an empty map, and copies the parent scope to it, adding in
* the remaining `args`.
*
* @param {Map} parentScope
* @param {...any} args
* @returns {Map}
*/
export function createSubScope(parentScope) {
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
if (typeof parentScope.createSubScope === 'function') {
return assign(parentScope.createSubScope(), ...args);
}
return assign(createEmptyMap(), parentScope, ...args);
}