Passed
Push — master ( 95cb8b...ff74ae )
by Rick
02:47
created

Utils::merge()   A

Complexity

Conditions 2
Paths 1

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 7
ccs 3
cts 3
cp 1
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 3
nc 1
nop 2
crap 2
1
<?php
2
/**
3
 * Copyright 2017 NanoSector
4
 *
5
 * You should have received a copy of the MIT license with the project.
6
 * See the LICENSE file for more information.
7
 */
8
9
namespace ValidationClosures;
10
11
class Utils
12
{
13
	/**
14
	 * @param \Closure $closure
15
	 *
16
	 * @return \Closure
17
	 */
18 1
	public static function invert(\Closure $closure)
19
	{
20
		return function ($value) use ($closure)
21
		{
22 1
			return !$closure($value);
23 1
		};
24
	}
25
26
	/**
27
	 * @param \Closure $closure1
28
	 * @param \Closure $closure2
29
	 *
30
	 * @return \Closure
31
	 */
32 1
	public static function merge(\Closure $closure1, \Closure $closure2)
33
	{
34
		return function ($value) use ($closure1, $closure2)
35
		{
36 1
			return $closure1($value) || $closure2($value);
37 1
		};
38
	}
39
40
	/**
41
	 * @param \Closure $closure1
42
	 * @param \Closure $closure2
43
	 *
44
	 * @return \Closure
45
	 */
46
	public static function both(\Closure $closure1, \Closure $closure2)
47
	{
48 1
		return function ($value) use ($closure1, $closure2)
49
		{
50 1
			return $closure1($value) && $closure2($value);
51 1
		};
52
	}
53
54
	/**
55
	 * @param \Closure $closure
56
	 * @param array $values
57
	 *
58
	 * @return bool
59
	 */
60 4
	public static function validateArray(\Closure $closure, array $values): bool
61
	{
62 4
		foreach ($values as $value)
63 4
			if (!$closure($value))
64 2
				return false;
65
66 3
		return true;
67
	}
68
}