diff options
author | Bruce Wells <brucekwells@gmail.com> | 2019-01-12 07:48:43 +0300 |
---|---|---|
committer | Bruce Wells <brucekwells@gmail.com> | 2019-01-12 07:56:39 +0300 |
commit | 44e2bb192eb1c847741894ef24c8fbe24fe2f15a (patch) | |
tree | caac62a21a43b80221121f3838b8cd5487d27983 /src | |
parent | 145a0a136fc41dc59a78637a8e84f1c8952ecc31 (diff) |
Fixed function parameter order
Corrected $places default value for addFunction to match TokenFactory
Added function order test and put expected order first in assertEquals
If else blocks in calculator
Updated docs
Diffstat (limited to 'src')
-rw-r--r-- | src/NXP/Classes/Calculator.php | 12 | ||||
-rw-r--r-- | src/NXP/Classes/Token/TokenFunction.php | 4 | ||||
-rw-r--r-- | src/NXP/MathExecutor.php | 2 |
3 files changed, 7 insertions, 11 deletions
diff --git a/src/NXP/Classes/Calculator.php b/src/NXP/Classes/Calculator.php index 1ceac84..62dbc17 100644 --- a/src/NXP/Classes/Calculator.php +++ b/src/NXP/Classes/Calculator.php @@ -38,22 +38,18 @@ class Calculator foreach ($tokens as $token) { if ($token instanceof TokenNumber) { array_push($stack, $token); - } - if ($token instanceof TokenStringDoubleQuoted) { + } else if ($token instanceof TokenStringDoubleQuoted) { array_push($stack, $token); - } - if ($token instanceof TokenStringSingleQuoted) { + } else if ($token instanceof TokenStringSingleQuoted) { array_push($stack, $token); - } - if ($token instanceof TokenVariable) { + } else if ($token instanceof TokenVariable) { $variable = $token->getValue(); if (!array_key_exists($variable, $variables)) { throw new UnknownVariableException($variable); } $value = $variables[$variable]; array_push($stack, new TokenNumber($value)); - } - if ($token instanceof InterfaceOperator || $token instanceof TokenFunction) { + } else if ($token instanceof InterfaceOperator || $token instanceof TokenFunction) { array_push($stack, $token->execute($stack)); } } diff --git a/src/NXP/Classes/Token/TokenFunction.php b/src/NXP/Classes/Token/TokenFunction.php index b2866c3..04eae30 100644 --- a/src/NXP/Classes/Token/TokenFunction.php +++ b/src/NXP/Classes/Token/TokenFunction.php @@ -32,9 +32,9 @@ class TokenFunction extends AbstractContainerToken implements InterfaceFunction $args = []; list($places, $function) = $this->value; for ($i = 0; $i < $places; $i++) { - array_push($args, array_pop($stack)->getValue()); + $args[] = array_pop($stack)->getValue(); } - $result = call_user_func_array($function, $args); + $result = call_user_func_array($function, array_reverse($args)); return new TokenNumber($result); } diff --git a/src/NXP/MathExecutor.php b/src/NXP/MathExecutor.php index 29c6a64..6325d35 100644 --- a/src/NXP/MathExecutor.php +++ b/src/NXP/MathExecutor.php @@ -174,7 +174,7 @@ class MathExecutor * @return MathExecutor * @throws \ReflectionException */ - public function addFunction($name, $function = null, $places = 1) + public function addFunction($name, $function = null, $places = null) { $this->tokenFactory->addFunction($name, $function, $places); |