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

FreqTransformer   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 2
dl 0
loc 29
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A transform() 0 10 2
A validate() 0 6 2
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