1
0
forked from sent/waves
waves/public/assets/g/mario/References/MathDecidr-0.2.0.js
2025-04-09 17:11:14 -05:00

104 lines
3.5 KiB
JavaScript

var MathDecidr;
(function (MathDecidr_1) {
"use strict";
var MathDecidr = (function () {
/**
* @param {IMathDecidrSettings} settings
*/
function MathDecidr(settings) {
if (settings === void 0) { settings = {}; }
var i;
this.constants = settings.constants || {};
this.equations = {};
this.equationsRaw = settings.equations || {};
if (this.equationsRaw) {
for (i in this.equationsRaw) {
if (this.equationsRaw.hasOwnProperty(i)) {
this.addEquation(i, this.equationsRaw[i]);
}
}
}
}
/* Simple gets
*/
/**
* @return {Object} Useful constants the MathDecidr may use in equations.
*/
MathDecidr.prototype.getConstants = function () {
return this.constants;
};
/**
* @param {String} name The name of a constant to return.
* @return {Mixed} The value for the requested constant.
*/
MathDecidr.prototype.getConstant = function (name) {
return this.constants[name];
};
/**
* @return {Object} Stored equations with the internal members bound as
* their arguments.
*/
MathDecidr.prototype.getEquations = function () {
return this.equations;
};
/**
* @return {Object} The raw equations, unbound.
*/
MathDecidr.prototype.getRawEquations = function () {
return this.equationsRaw;
};
/**
* @param {String} name
* @return {Function} The equation under the given name.
*/
MathDecidr.prototype.getEquation = function (name) {
return this.equations[name];
};
/**
* @param {String} name
* @return {Function} The raw equation under the given name.
*/
MathDecidr.prototype.getRawEquation = function (name) {
return this.equationsRaw[name];
};
/* Simple additions
*/
/**
* Adds a constant of the given name and value.
*
* @param {String} name
* @param {Mixed} value
*/
MathDecidr.prototype.addConstant = function (name, value) {
this.constants[name] = value;
};
/**
* Adds an equation Function under the given name.
*
* @param {String} name
* @param {Function} value
*/
MathDecidr.prototype.addEquation = function (name, value) {
this.equationsRaw[name] = value;
this.equations[name] = value.bind(this, this.constants, this.equations);
};
/* Computations
*/
/**
* Runs a stored equation with any number of arguments, returning the result.
*
* @param {String} name The name of the equation to run.
* @param {Mixed} ...args Any arguments to pass to the equation.
*/
MathDecidr.prototype.compute = function (name) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
return this.equations[name].apply(this, Array.prototype.slice.call(arguments, 1));
};
return MathDecidr;
})();
MathDecidr_1.MathDecidr = MathDecidr;
})(MathDecidr || (MathDecidr = {}));