1 |
efrain |
1 |
Description of EvalMath library import into Moodle
|
|
|
2 |
|
|
|
3 |
Our changes:
|
|
|
4 |
* implicit multiplication (optionally) not allowed
|
|
|
5 |
* new custom calc emulation functions
|
|
|
6 |
* removed (optionally) e and pi constants - not used in calc
|
|
|
7 |
* removed sample files
|
|
|
8 |
* Fix a == FALSE that should have been === FALSE.
|
|
|
9 |
* added $expecting_op = true; for branch where a function with no operands is found to fix bug.
|
|
|
10 |
* moved pattern for func and var names into a static var
|
|
|
11 |
* made a function to test a string to see if it is a valid func or var name.
|
|
|
12 |
* localized strings
|
|
|
13 |
* added round, ceil and floor functions.
|
|
|
14 |
* EvalMath::EvalMath() changed to EvalMath::__construct() and there is a new EvalMath::EvalMath
|
|
|
15 |
function to maintain backwards compatibility
|
|
|
16 |
* Ensure a string is passed to preg_match in EvalMath::nfx.
|
|
|
17 |
|
|
|
18 |
To see all changes diff against version 1.1, available from:
|
|
|
19 |
http://www.phpclasses.org/browse/package/2695.html
|
|
|
20 |
|
|
|
21 |
skodak, Tim Hunt
|
|
|
22 |
|
|
|
23 |
Changes by Juan Pablo de Castro (MDL-14274):
|
|
|
24 |
* operators >,<,>=,<=,== added.
|
|
|
25 |
* function if[thenelse](condition, true_value, false_value)
|
|
|
26 |
|
|
|
27 |
Changes by Stefan Erlachner, Thomas Niedermaier (MDL-64414):
|
|
|
28 |
* add function or:
|
|
|
29 |
e.g. if (or(condition_1, condition_2, ... condition_n))
|
|
|
30 |
* add function and:
|
|
|
31 |
e.g. if (and(condition_1, condition_2, ... condition_n))
|
|
|
32 |
|
|
|
33 |
Changes by Raquel Ortega (MDL-76413)
|
|
|
34 |
* Avoid PHP 8.2: Partially-supported callable deprecations
|
|
|
35 |
* eg: call_user_func_array(array('self', 'sum'), $args to call_user_func_array(array(self::class, 'sum'), $args)
|
|
|
36 |
|
|
|
37 |
Changes by Meirza (MDL-75464)
|
|
|
38 |
* EvalMath has unit tests in lib/tests/mathslib_test.php,
|
|
|
39 |
since version 1.0.1, there are two additional tests:
|
|
|
40 |
- shouldSupportModuloOperator()
|
|
|
41 |
- shouldConsiderDoubleMinusAsPlus()
|
|
|
42 |
To pass the test, some modifications must be made:
|
|
|
43 |
- Adjust the test code so it can run properly by using \calc_formula.
|
|
|
44 |
Please see the differences between the code in MDL-75464 and the upstream code.
|
|
|
45 |
- In the dataprovider for both tests, add the formula in the first array with "=" at the first character.
|
|
|
46 |
Before:
|
|
|
47 |
```
|
|
|
48 |
'a%b', // 9%3 => 0
|
|
|
49 |
```
|
|
|
50 |
After:
|
|
|
51 |
```
|
|
|
52 |
'=a%b', // 9%3 => 0
|