18 silly publish readme: 'Equation\n========\nSolve math expressions or create equations for repeated and complex Math tasks.\n\nTo use in browser, download [`equation.min.js`](https://raw.githubusercontent.com/mdibaiee/Equation.js/master/equation.min.js).\n\nInstall using npm:\n\n```\nnpm install equations\n```\n\n####Examples:\n\n```javascript\n// solve\nconsole.log(Equation.solve(\'4 * lg(4) ^ 3\')); // 32\n\n// equation\nlet sphereArea = Equation.equation(\'4 * PI * r^2\');\n\nconsole.log(sphereArea(5)); // 314.1592653589793\n```\n\nYou can also register your own operators and constants.\n\n```javascript\n// these options are explained below\nEquation.registerOperator(\'$\', {\n fn: a => 1/a,\n format: \'10\',\n precedence: 2\n});\n\nEquation.solve(\'$2\'); // 0.5\nEquation.solve(\'$5\'); // 0.2\n\nEquation.registerConstant(\'N\', () => {\n return Math.random() * 10 + 10\n});\n\nEquation.solve(\'N\'); // a number between 10 and 20\n```\n\nFor a list of operators and constants see `[operators.js](https://github.com/mdibaiee/Equation.js/blob/master/lib/operators.js)` and `[constants.js](https://github.com/mdibaiee/Equation.js/blob/master/lib/constants.js)`.\n\nAPI\n===\n####solve(expression: String)\nTakes a math expression and evaluates it, returning the result.\n\n####equation(expression: String)\nTakes a math expression containing variables, returning a function which\nreplaces the variables with given arguments, and solves the expression.\n\n####registerOperator(key: String, options: Object)\nRegisters a new operator.\n\nOptions:\n\n#####fn\n The function which is run on arguments and returns the result\n#####format\n The format which specifies how arguments are placed relative to operator, this is a string in which 1 represents the operator and zeroes represent arguments.\n\n For example `+` has the format `010` and factorial has `01`.\n#####precedence\n Specifies the precedence of operator. The less the value, the higher the precedence, resulting in sooner execution.\n\n####registerConstant(key: String, value: Function/Number)\nRegisters a new constant. value can be a function (takes no arguments), or a constant number.\n\nThat\'s right, we have named these *constants* but they actually can change, that\'s why we can use functions to define them. An example is the `RAND` constant which calls `Math.random`.\n\nContributing\n============\nThe code is commented and I hope you don\'t have a hard time contributing,\nanyway, some tips about contributing:\n\nThe source code is in `lib` directory and is then transpiled into `dist`.\n\n#####Grunt Tasks\n######default\nTranspiles `lib` to `dist`\n######build\nTranspiles, browserifies, uglifies\n######eslint\nRuns ESLint on `lib` and `tests`\n######test\nRuns the tests\n\n---\nPlease make sure to run `grunt eslint` before commiting.\n\nIf you\'re adding something new, please add a test, too.\n',