Completed
Push — master ( 3c0b40...28fa0e )
by Kévin
10s
created

NativeOperators::create()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 48
Code Lines 29

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 48
rs 9.125
c 0
b 0
f 0
cc 1
eloc 29
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) {
16
                return sprintf('(%s && %s)', $a, $b);
17
            },
18
            'or' => function ($a, $b) {
19
                return sprintf('(%s || %s)', $a, $b);
20
            },
21
            'not' => function ($a) {
22
                return sprintf('!(%s)', $a);
23
            },
24
            '=' => function ($a, $b) {
25
                return sprintf('%s == %s', $a, $b);
26
            },
27
            'is' => function ($a, $b) {
28
                return sprintf('%s === %s', $a, $b);
29
            },
30
            '!=' => function ($a, $b) {
31
                return sprintf('%s != %s', $a, $b);
32
            },
33
            '>' => function ($a, $b) {
34
                return sprintf('%s > %s', $a, $b);
35
            },
36
            '>=' => function ($a, $b) {
37
                return sprintf('%s >= %s', $a, $b);
38
            },
39
            '<' => function ($a, $b) {
40
                return sprintf('%s < %s', $a, $b);
41
            },
42
            '<=' => function ($a, $b) {
43
                return sprintf('%s <= %s', $a, $b);
44
            },
45
            'in' => function ($a, $b) {
46
                return sprintf('in_array(%s, %s)', $a, $b);
47
            },
48
        ];
49
50
        $defaultOperators = [
51
            'sum' => function () {
52
                return array_sum(func_get_args());
53
            },
54
        ];
55
56
        $definitions = new Definitions($defaultOperators, $defaultInlineOperators);
57
58
        return $definitions->mergeWith($customOperators);
59
    }
60
}
61