TenMinutesCeiling   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 5
eloc 15
dl 0
loc 27
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A fuzzy() 0 25 5
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * Copyright Andrea Heigl <[email protected]>
7
 *
8
 * Licenses under the MIT-license. For details see the included file LICENSE.md
9
 */
10
11
namespace Org_Heigl\CaptainHook\Hooks\AddTime\Fuzzier;
12
13
use DateInterval;
14
15
class TenMinutesCeiling implements Fuzzier
16
{
17
    public function fuzzy(DateInterval $interval): DateInterval
18
    {
19
        $interval = clone $interval;
20
21
        if ($interval->s > 0) {
22
            $interval->s = 0;
23
            $interval->i = $interval->i + 1;
24
        }
25
26
        if ($interval->i === 0) {
27
            return $interval;
28
        }
29
30
        if ($interval->i % 10 === 0) {
31
            return $interval;
32
        }
33
34
        $modulo = ceil($interval->i / 10);
35
        if ($modulo % 6 === 0) {
36
            $interval->h = $interval->h + ceil($modulo / 6);
37
            $modulo = 0;
38
        }
39
        $interval->i = $modulo * 10;
40
41
        return $interval;
42
    }
43
}