Completed
Push — master ( b7fe7e...4bccf1 )
by Peter
01:34
created

Schedule::matchedRule()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 3

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 10
ccs 5
cts 5
cp 1
rs 9.4285
cc 3
eloc 5
nc 3
nop 1
crap 3
1
<?php
2
/**
3
 * AnimeDb package.
4
 *
5
 * @author    Peter Gribanov <[email protected]>
6
 * @copyright Copyright (c) 2011, Peter Gribanov
7
 */
8
9
namespace AnimeDb\SmartSleep;
10
11
use AnimeDb\SmartSleep\Rule\Rule;
12
13
class Schedule implements \IteratorAggregate, \Countable
14
{
15
    /**
16
     * @var Rule[]
17
     */
18
    private $rules = [];
19
20
    /**
21
     * @param Rule[] $rules
22
     */
23 9
    public function __construct(array $rules = [])
24
    {
25 9
        foreach ($rules as $rule) {
26 1
            $this->add($rule);
27
        }
28 9
    }
29
30
    /**
31
     * @param Rule $rule
32
     */
33 5
    public function add(Rule $rule)
34
    {
35 5
        $this->rules[] = $rule;
36 5
    }
37
38
    /**
39
     * @return int
40
     */
41 2
    public function count()
42
    {
43 2
        return count($this->rules);
44
    }
45
46
    /**
47
     * @return bool
48
     */
49 2
    public function isEmpty()
50
    {
51 2
        return empty($this->rules);
52
    }
53
54
    /**
55
     * @return Rule[]
56
     */
57 2
    public function toArray()
58
    {
59 2
        return $this->rules;
60
    }
61
62
    /**
63
     * @return \ArrayIterator
64
     */
65 2
    public function getIterator()
66
    {
67 2
        return new \ArrayIterator($this->rules);
68
    }
69
70
    /**
71
     * @param \DateTime $time
72
     *
73
     * @return Rule|null
74
     */
75 3
    public function matchedRule(\DateTime $time)
76
    {
77 3
        foreach ($this->rules as $rule) {
78 3
            if ($rule->isMatched($time)) {
79 3
                return $rule;
80
            }
81
        }
82
83 1
        return null;
84
    }
85
}
86