Skip to content

Commit

Permalink
remove line breaks from a formula
Browse files Browse the repository at this point in the history
  • Loading branch information
optimistex committed Dec 8, 2017
1 parent f684fef commit 9abeac7
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 2 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "optimistex/math-expression",
"version": "2.1.1",
"version": "2.1.2",
"type": "library",
"description": "Taken from http://www.phpclasses.org/browse/file/11680.html, cred to Miles Kaufmann",
"keywords": [
Expand Down
2 changes: 1 addition & 1 deletion expression.php
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ public function e($expr)
public function evaluate($expr)
{
$this->last_error = null;
$expr = trim($expr);
$expr = preg_replace("/\r|\n/", '', trim($expr));
if ($expr && $expr[strlen($expr) - 1] === ';') {
$expr = substr($expr, 0, -1); // strip semicolons at the end
}
Expand Down
14 changes: 14 additions & 0 deletions tests/Expression.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public function arrayTest(array $array)
$this->assertEquals($result, eval('return ' . $iValue . ';'));
}
}

/*
public function testTest() {
$expression = '2+2*2-2/2 >= 2*2+-2/2*2';
Expand Down Expand Up @@ -392,4 +393,17 @@ public function testFunctionOrderParameters()
$this->assertEquals($e->evaluate($formula), $result);
}
}

public function testRowBreaking()
{
$expr = new Expression();
$this->assertEquals(6, $expr->evaluate('2 + 2 * 2'));
$this->assertEquals(6, $expr->evaluate(
'2
+
2
*
2'
));
}
}

2 comments on commit 9abeac7

@alekseysolo
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Здравствуйте
Приношу извинения, что пишу сюда, просто раздела issue для fork нет.
Использую ваше решение в своих проектах, преимущественно логические выражения. Требуется условное присвоение значения переменным, например, a = 34 > 6 ? 23 : 32
На данный момент реализовал это с помощью внешней функции

$eval->functions['if' ] = function($bool, $true, $false) {
		return $bool ? $true : $false;
	};

Если продолжаете работать над проектом, возможно это удастся встроить, к сожалению глубоко вникнуть в исходный код пока нет времени, а он довольно непрост для понимания.
Спасибо

@optimistex
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Здравствуйте!
Спасибо за заметку про отключенный issue. Включил.
Вынес обсуждение сюда: #3

Please sign in to comment.