calculator for natural formula like "1+2+3" for result 6,support custom function like sqrt(20) also whatever you want,support formulas loop, like sqrt(sqrt(20+20))
Changelog
2018-09-05
- add supprot pow(^) for function convert and shunt.
Install
$ npm install --save happycalculator
or bower
$ bower install --save happycalculator
and it will apply happycalculator global to you
Usage
base
var happycalculator = ;var formula = '20 * ( 10 + 20 ) / 20';happycalculator;//output: ['20', '*', '(', '10', '+', '20', ')', '/', '20']happycalculator;//output: [ '20', '10', '20', '+', '*', '20', '/' ]happycalculator;//output: 30
advance
//sqrt__custom is default seted to '$1*$2' happycalculator;//output 100 happycalculator; //happycalculator;//output 20happycalculator
support simple code
var code = `sum = $1 + $2;a = 2;b = 3;sum(a,b)+a;a = 3;a+b;`calculator;//output ['(2+3)+2', '3+3']calculator;//output [7, 6]
and that's all simple code support right now
API
convert(string_infix)
return an array that split with "+-*/",and if the string with values(example:a,ab,cos(20)) also that will be ok
shunt(string_infix)
return an array postinfx that with the Shunting-yard Algorithm converted,the core code was written from rosettacode and i change some code for the project
calculate(string_infix)
return the num calculated
addFormulas(formulas)
add custom formulas to the calculator,and the formula rule is looks like that{'key' => '$1+$2+$3'},key(1,2,3),default formula function has sqrt:'$1*$1' right now,its working on
removeFormulas()
remove all custom formulas you add in and defaults to the default project supported formulas
parse(string_code)
return array of string_code parsed
calculateCode(string_code)
return array of the result calculated by the string_code parsed
License
MIT © cdyue