aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Wells <phpfui@users.noreply.github.com>2018-09-12 19:36:15 +0300
committerGitHub <noreply@github.com>2018-09-12 19:36:15 +0300
commit7a36e07736c04e620380fc6657888dca50ad8e31 (patch)
tree7b58c49eb788554db08ee8402bd014d10dae6b7b
parent00def17f0e9183544813427cddbdaed851986309 (diff)
parent76d1b4b8f02d555e4b4f4fd4d641597f0f6b5f4e (diff)
Merge branch 'master' into support_for_double_quoted_strings
-rw-r--r--.travis.yml6
-rw-r--r--README.md10
-rw-r--r--src/NXP/Classes/TokenFactory.php12
-rw-r--r--src/NXP/MathExecutor.php6
-rw-r--r--tests/MathTest.php12
5 files changed, 40 insertions, 6 deletions
diff --git a/.travis.yml b/.travis.yml
index 842031b..47d1020 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,9 +1,9 @@
language: php
php:
- - 5.3
- - 5.4
+ - 5.6
+ - 7.2
before_script:
- wget http://getcomposer.org/composer.phar
- - php composer.phar install \ No newline at end of file
+ - php composer.phar install
diff --git a/README.md b/README.md
index 8c611b8..2fdb5c1 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,15 @@ Simple math expressions calculator
## Install via Composer
-All instructions to install here: https://packagist.org/packages/nxp/math-executor
+Stable branch
+```
+composer require "nxp/math-executor" "dev-master"
+```
+
+Dev branch
+```
+composer require "nxp/math-executor" "dev-dev"
+```
## Sample usage:
diff --git a/src/NXP/Classes/TokenFactory.php b/src/NXP/Classes/TokenFactory.php
index dbe6624..e5aa865 100644
--- a/src/NXP/Classes/TokenFactory.php
+++ b/src/NXP/Classes/TokenFactory.php
@@ -64,6 +64,18 @@ class TokenFactory
return $this->functions;
}
+
+ /**
+ * get functions
+ *
+ * @return array containing callback and places indexed by
+ * function name
+ */
+ public function getFunctions()
+ {
+ return $this->functions;
+ }
+
/**
* Add operator
* @param string $operatorClass
diff --git a/src/NXP/MathExecutor.php b/src/NXP/MathExecutor.php
index 56cefe5..d62d07a 100644
--- a/src/NXP/MathExecutor.php
+++ b/src/NXP/MathExecutor.php
@@ -117,6 +117,10 @@ class MathExecutor
*/
public function setVar($variable, $value)
{
+ if (!is_numeric($value)) {
+ throw new \Exception("Variable ({$variable}) value must be a number ({$value}) type ({gettype($value)})");
+ }
+
$this->variables[$variable] = $value;
return $this;
@@ -196,7 +200,7 @@ class MathExecutor
* @param int $places Count of arguments
* @return MathExecutor
*/
- public function addFunction($name, callable $function = null, $places = 1)
+ public function addFunction($name, $function = null, $places = 1)
{
$this->tokenFactory->addFunction($name, $function, $places);
diff --git a/tests/MathTest.php b/tests/MathTest.php
index 3fa7270..db6e486 100644
--- a/tests/MathTest.php
+++ b/tests/MathTest.php
@@ -74,4 +74,14 @@ class MathTest extends \PHPUnit_Framework_TestCase
['100500 * 3.5E-5'],
];
}
-}
+
+ public function testFunction()
+ {
+ $calculator = new MathExecutor();
+
+ $calculator->addFunction('round', function ($arg) { return round($arg); }, 1);
+ /** @var float $phpResult */
+ eval('$phpResult = round(100/30);');
+ $this->assertEquals($calculator->execute('round(100/30)'), $phpResult);
+ }
+} \ No newline at end of file