Passed
Push — master ( ea4a6e...fe1c44 )
by Dan
02:42
created

Serializer::prettyJson()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
3
namespace SixtyNine\Cloud;
4
5
use JMS\Serializer\SerializerBuilder;
6
use SixtyNine\Cloud\Model\Cloud;
7
use SixtyNine\Cloud\Model\CloudWord;
8
use SixtyNine\Cloud\Model\Word;
9
use SixtyNine\Cloud\Model\WordsList;
10
11
class Serializer
12
{
13
    /**
14
     * @param WordsList $list
15
     * @param bool $pretty
16
     * @return string
17
     */
18 1
    public function saveList(WordsList $list, $pretty = false)
19
    {
20 1
        $serializer = SerializerBuilder::create()->build();
21 1
        $data = $serializer->serialize($list, 'json');
22 1
        return $pretty ? $this->prettyJson($data) : $data;
23
    }
24
25
    /**
26
     * @param string $data
27
     * @return WordsList
28
     */
29 2
    public function loadList($data)
30
    {
31 2
        $serializer = SerializerBuilder::create()->build();
32 2
        $list = $serializer->deserialize($data, WordsList::class, 'json');
33
        /** @var Word $word */
34 2
        foreach ($list->getWords() as $word) {
35 2
            $word->setList($list);
36
        }
37 2
        return $list;
38
    }
39
40
    /**
41
     * @param Cloud $cloud
42
     * @param bool $pretty
43
     * @return string
44
     */
45 1
    public function saveCloud(Cloud $cloud, $pretty = false)
46
    {
47 1
        $serializer = SerializerBuilder::create()->build();
48 1
        $data = $serializer->serialize($cloud, 'json');
49 1
        return $pretty ? $this->prettyJson($data) : $data;
50
    }
51
52
    /**
53
     * @param string $data
54
     * @return Cloud
55
     */
56 2
    public function loadCloud($data)
57
    {
58 2
        $serializer = SerializerBuilder::create()->build();
59 2
        $cloud = $serializer->deserialize($data, Cloud::class, 'json');
60
        /** @var CloudWord $word */
61 2
        foreach ($cloud->getWords() as $word) {
62 2
            $box = $word->getBox();
63 2
            $word->setCloud($cloud);
64 2
            $box->update();
65 2
            $word->setPosition(array((int)$box->getX(), (int)$box->getY()));
66
        }
67 2
        return $cloud;
68
    }
69
70
    /**
71
     * @param string $data
72
     * @return string
73
     */
74 2
    public function prettyJson($data)
75
    {
76 2
        return json_encode(json_decode($data), JSON_PRETTY_PRINT);
77
    }
78
}
79