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

NativeOperators   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 30
wmc 1
lcom 0
cbo 1
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B create() 0 24 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