HtmlField   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 46
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 0
Metric Value
dl 0
loc 46
c 0
b 0
f 0
wmc 7
lcom 1
cbo 4
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A handles() 0 3 1
A inflate() 0 12 3
A getDescription() 0 2 1
A lineParameter() 0 3 1
1
<?php
2
namespace rtens\domin\delivery\cli\fields;
3
4
use rtens\domin\delivery\cli\CliField;
5
use rtens\domin\delivery\ParameterReader;
6
use rtens\domin\Parameter;
7
use rtens\domin\parameters\Html;
8
use watoki\reflect\type\ClassType;
9
10
class HtmlField implements CliField {
11
12
    /** @var ParameterReader */
13
    private $reader;
14
15
    public function __construct(ParameterReader $reader) {
16
        $this->reader = $reader;
17
    }
18
19
    /**
20
     * @param Parameter $parameter
21
     * @return bool
22
     */
23
    public function handles(Parameter $parameter) {
24
        return $parameter->getType() == new ClassType(Html::class);
25
    }
26
27
    /**
28
     * @param Parameter $parameter
29
     * @param string $serialized
30
     * @return Html
31
     */
32
    public function inflate(Parameter $parameter, $serialized) {
33
        $lines = [];
34
35
        $line = $serialized;
36
        while ($line) {
37
            $lines[] = $line;
38
39
            $lineParameter = $this->lineParameter($parameter, count($lines));
40
            $line = $this->reader->has($lineParameter) ? $this->reader->read($lineParameter) : null;
41
        }
42
        return new Html(implode(PHP_EOL, $lines));
43
    }
44
45
    /**
46
     * @param Parameter $parameter
47
     * @return string
48
     */
49
    public function getDescription(Parameter $parameter) {
50
    }
51
52
    private function lineParameter(Parameter $parameter, $lineNumber) {
53
        return new Parameter($parameter->getName() . '-' . $lineNumber, $parameter->getType());
54
    }
55
}