Completed
Push — master ( 68be21...073c54 )
by Kévin
02:41
created

NativeOperators::create()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 24
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 24
rs 8.9713
cc 1
eloc 17
nc 1
nop 1
1
<?php
2
3
namespace RulerZ\Target\Native;
4
5
use RulerZ\Target\Operators\Definitions;
6
7
class NativeOperators
8
{
9
    /**
10
     * @return Definitions
11
     */
12
    public static function create(Definitions $customOperators)
13
    {
14
        $defaultInlineOperators = [
15
            'and' => function ($a, $b) { return sprintf('(%s && %s)', $a, $b); },
16
            'or' =>  function ($a, $b) { return sprintf('(%s || %s)', $a, $b); },
17
            'not' => function ($a)     { return sprintf('!(%s)', $a); },
18
            '=' =>   function ($a, $b) { return sprintf('%s == %s', $a, $b); },
19
            'is' =>  function ($a, $b) { return sprintf('%s === %s', $a, $b); },
20
            '!=' =>  function ($a, $b) { return sprintf('%s != %s', $a, $b); },
21
            '>' =>   function ($a, $b) { return sprintf('%s > %s', $a, $b); },
22
            '>=' =>  function ($a, $b) { return sprintf('%s >= %s', $a, $b); },
23
            '<' =>   function ($a, $b) { return sprintf('%s < %s', $a, $b); },
24
            '<=' =>  function ($a, $b) { return sprintf('%s <= %s', $a, $b); },
25
            'in' =>  function ($a, $b) { return sprintf('in_array(%s, %s)', $a, $b); },
26
        ];
27
28
        $defaultOperators = [
29
            'sum' => function () { return array_sum(func_get_args()); }
30
        ];
31
32
        $definitions = new Definitions($defaultOperators, $defaultInlineOperators);
33
34
        return $definitions->mergeWith($customOperators);
35
    }
36
}
37