Passed
Push — steps ( 2bf0cd...c7b5f4 )
by Tom
04:13
created

StepServices::parseServices()   A

Complexity

Conditions 5
Paths 10

Size

Total Lines 16
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 5

Importance

Changes 0
Metric Value
cc 5
eloc 8
nc 10
nop 1
dl 0
loc 16
ccs 9
cts 9
cp 1
crap 5
rs 9.6111
c 0
b 0
f 0
1
<?php
2
3
/* this file is part of pipelines */
4
5
namespace Ktomk\Pipelines\File\Pipeline;
6
7
use Ktomk\Pipelines\File\ParseException;
8
9
/**
10
 * Class StepServices
11
 *
12
 * Services entry in a step
13
 *
14
 * @package Ktomk\Pipelines\File\File
15
 */
16
class StepServices
17
{
18
    /**
19
     * @var Step
20
     */
21
    private $step;
22
23
    /**
24
     * @var array
25
     */
26
    private $services;
27
28 4
    public function __construct(Step $step, $services)
29
    {
30
        // quick validation: script
31 4
        $parsed = $this->parseServices($services);
32
33 2
        $this->step = $step;
34 2
        $this->services = array_flip($parsed);
35 2
    }
36
37
    /**
38
     * @param string $service
39
     * @return bool
40
     */
41 1
    public function has($service)
42
    {
43 1
        return isset($this->services[$service]);
44
    }
45
46 4
    private function parseServices($services)
47
    {
48 4
        if (!is_array($services)) {
49 1
            ParseException::__("'services' requires a list of services");
50
        }
51
52 3
        $reservoir = array();
53 3
        foreach ($services as $service) {
54 2
            if (!is_string($service)) {
55 1
                ParseException::__("'services' service name string expected");
56
            }
57
58 2
            '' === ($service = trim($service)) || $reservoir[] = $service;
59
         }
60
61 2
        return $reservoir;
62
    }
63
}
64