aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruce Wells <brucekwells@gmail.com>2019-01-12 07:48:43 +0300
committerBruce Wells <brucekwells@gmail.com>2019-01-12 07:56:39 +0300
commit44e2bb192eb1c847741894ef24c8fbe24fe2f15a (patch)
treecaac62a21a43b80221121f3838b8cd5487d27983 /src
parent145a0a136fc41dc59a78637a8e84f1c8952ecc31 (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.php12
-rw-r--r--src/NXP/Classes/Token/TokenFunction.php4
-rw-r--r--src/NXP/MathExecutor.php2
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);