Completed
Pull Request — master (#18)
by Samuel
03:55
created

FreqTransformer::transform()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 10
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 6
nc 2
nop 1
1
<?php
2
3
namespace Recurrence\Rrule\Transformer;
4
5
use Recurrence\Model\Frequency;
6
use Recurrence\Rrule\Extractor\FreqExtractor;
7
use Recurrence\Model\Exception\InvalidRruleException;
8
use Recurrence\Model\Exception\InvalidFrequencyOptionException;
9
10
/**
11
 * Class FreqTransformer
12
 * @package Recurrence\RruleTransformer
13
 */
14
class FreqTransformer implements RruleTransformerInterface
15
{
16
    /**
17
     * @param array $values
18
     * @throws InvalidRruleException
19
     * @return Frequency
20
     */
21
    public function transform(array $values)
22
    {
23
        $this->validate($values);
24
25
        try {
26
            return new Frequency($values[0]);
27
        } catch (InvalidFrequencyOptionException $e) {
28
            throw new InvalidRruleException(FreqExtractor::RRULE_PARAMETER, (string) $values[0]);
29
        }
30
    }
31
32
    /**
33
     * @param array $values
34
     * @throws InvalidRruleException
35
     */
36
    protected function validate(array $values)
37
    {
38
        if (!isset($values[0])) {
39
            throw new InvalidRruleException(FreqExtractor::RRULE_PARAMETER);
40
        }
41
    }
42
}
43