Passed
Push — main ( b13b1c...30676d )
by Emlyn
12:24
created

Json::renderRelease()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 9
c 1
b 0
f 0
nc 2
nop 1
dl 0
loc 15
ccs 10
cts 10
cp 1
crap 2
rs 9.9666
1
<?php
2
/**
3
 * @category Library
4
 * @license MIT http://opensource.org/licenses/MIT
5
 * @link https://github.com/emlynwest/changelog
6
 */
7
8
namespace ChangeLog\Renderer;
9
10
use ChangeLog\Log;
11
use ChangeLog\Release;
12
use ChangeLog\RenderInterface;
13
14
/**
15
 * Allows change logs to be rendered to json
16
 */
17
class Json implements RenderInterface
18
{
19
20
	/**
21
	 * {@inheritdoc}
22
	 */
23 8
	public function render(Log $log)
24
	{
25 8
		$content = [
26 8
			'title' => $log->getTitle(),
27 8
			'description' => $log->getDescription(),
28 8
			'releases' => [],
29 8
		];
30
31
		/**
32
		 * @var string  $name
33
		 * @var Release $release
34
		 */
35 8
		foreach ($log as $name => $release)
36
		{
37 8
			$content['releases'][$name] = $this->renderRelease($release);
38
		}
39
40 8
		return json_encode($content);
41
	}
42
43
	/**
44
	 * @param Release $release
45
	 *
46
	 * @return array
47
	 */
48 8
	protected function renderRelease(Release $release)
49
	{
50 8
		$date = null;
51
52 8
		if ($release->getDate() !== null)
53
		{
54 8
			$date = $release->getDate()->format('Y-m-d');
55
		}
56
57 8
		return [
58 8
			'name' => $release->getName(),
59 8
			'link' => $release->getLink(),
60 8
			'linkName' => $release->getLinkName(),
61 8
			'date' => $date,
62 8
			'changes' => $release->getAllChanges(),
63 8
		];
64
	}
65
66
}
67