forked from sent/waves
104 lines
3.5 KiB
JavaScript
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 = {}));
|