Completed
Push — master ( c6ecf3...3eacba )
by stéphane
02:27
created

NodeSetKey   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 8
eloc 13
dl 0
loc 30
ccs 17
cts 17
cp 1
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A isAwaitingChild() 0 3 1
A __construct() 0 8 2
A build() 0 7 5
1
<?php
2
3
namespace Dallgoot\Yaml;
4
5
/**
6
 *
7
 * @author  Stéphane Rebai <[email protected]>
8
 * @license Apache 2.0
9
 * @link    TODO : url to specific online doc
10
 */
11
class NodeSetKey extends Node
12
{
13 3
    public function __construct(string $nodeString, int $line)
14
    {
15 3
        parent::__construct($nodeString, $line);
16 3
        $v = substr(trim($nodeString), 1);
17 3
        if (!empty($v)) {
18 3
            $value = NodeFactory::get($v, $line);
19 3
            $value->indent = null;
20 3
            $this->add($value);
21
        }
22 3
    }
23
24
    /**
25
     * @param object $parent The parent
26
     *
27
     * @throws \Exception  if a problem occurs during serialisation (json format) of the key
28
     */
29 1
    public function build(&$parent = null)
30
    {
31 1
        $built = is_null($this->value) ? null : $this->value->build();
32 1
        $stringKey = is_string($built) && Regex::isProperlyQuoted($built) ? trim($built, '\'" '): $built;
33 1
        $key = json_encode($stringKey, JSON_PARTIAL_OUTPUT_ON_ERROR|JSON_UNESCAPED_SLASHES);
34 1
        if (empty($key)) throw new \Exception("Cant serialize complex key: ".var_export($this->value, true));
35 1
        $parent->{trim($key, '\'" ')} = null;
36 1
    }
37
38 1
    public function isAwaitingChild(Node $child):bool
39
    {
40 1
        return is_null($this->value);
41
    }
42
}