HtmlField::inflate()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 12
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 12
c 0
b 0
f 0
rs 9.4285
cc 3
eloc 8
nc 3
nop 2
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
}