Passed
Push — master ( bce6b5...b40887 )
by Aurimas
02:19
created

allFn()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
ccs 1
cts 1
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Setherator\Variables;
6
7
use Closure;
8
9
function env(string $name, $default = null)
10
{
11 1
    $result = getenv($name);
12
13 1
    return false !== $result ? $result : $default;
14
}
15
16
function ref(string $name, $default = null)
17
{
18 7
    return reference($name, $default);
19
}
20
21
function refFn(string $name, $default = null)
22
{
23 1
    return fn () => ref($name, $default);
24
}
25
26
function reference(string $name, $default = null)
27
{
28 7
    return Variables::getInstance()->get($name, $default);
29
}
30
31
function referenceFn(string $name, $default = null)
32
{
33 1
    return fn () => reference($name, $default);
34
}
35
36
function context(Closure $closure, ...$args): Closure
37
{
38 2
    return fn () => $closure(...Variables::getInstance()->getContext(), ...all(...$args));
39
}
40
41
function factory(Closure $closure, ...$args): NonCacheableClosure
42
{
43 6
    return new NonCacheableClosure(fn () => $closure(...all(...$args)));
44
}
45
46
function all(...$args): array
47
{
48 9
    $result = [];
49 9
    foreach ($args as $arg) {
50 7
        $result[] = Variables::getInstance()->parseValue($arg);
51
    }
52
53 9
    return $result;
54
}
55
56
function allFn(...$args): Closure
57
{
58 1
    return fn () => all(...$args);
59
}
60
61
function logic($condition, $true, $false, bool $strict = false): Closure
62
{
63
    return static function () use ($condition, $true, $false, $strict) {
64 2
        $condition = Variables::getInstance()->parseValue($condition);
65
66 2
        if ($strict) {
67 1
            if (true === $condition) {
68 1
                return Variables::getInstance()->parseValue($true);
69
            }
70
71 1
            return Variables::getInstance()->parseValue($false);
72
        }
73
74 2
        if ($condition) {
75 2
            return Variables::getInstance()->parseValue($true);
76
        }
77
78 2
        return Variables::getInstance()->parseValue($false);
79 2
    };
80
}
81
82
function passthrough(Closure $closure, ...$args): Closure
83
{
84 2
    return fn () => $closure(...all(...$args));
85
}
86
87
function first(...$args)
88
{
89 1
    foreach ($args as $value) {
90 1
        $value = Variables::getInstance()->parseValue($value);
91
92 1
        if ($value) {
93 1
            return $value;
94
        }
95
    }
96
97 1
    return null;
98
}
99
100
function firstFn(...$args): Closure
101
{
102 1
    return fn () => first(...$args);
103
}
104