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

ChangeLog::setRenderer()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
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;
9
10
use LogicException;
11
12
/**
13
 * Main logic class that ties everything together.
14
 */
15
class ChangeLog
16
{
17
18
	/**
19
	 * @var ParserInterface
20
	 */
21
	protected $parser;
22
23
	/**
24
	 * @var RenderInterface
25
	 */
26
	protected $renderer;
27
28
	/**
29
	 * @var IOInterface
30
	 */
31
	protected $input;
32
33
	/**
34
	 * @var IOInterface
35
	 */
36
	protected $output;
37
38
	/**
39
	 * Reads in the given log and returns the constructed Log object.
40
	 *
41
	 * @return Log
42
	 *
43
	 * @throws LogicException
44
	 */
45 11
	public function parse()
46
	{
47 11
		if ($this->input === null)
48
		{
49 1
			throw new LogicException('You must specify an IOInterface for input first.');
50
		}
51
52 10
		return $this->parser->parse(
53 10
			$this->input->getContent()
54 10
		);
55
	}
56
57
	/**
58
	 * Writes out the given Log to the chosen output.
59
	 *
60
	 * @param Log $log
61
	 *
62
	 * @throws LogicException
63
	 */
64 9
	public function write(Log $log)
65
	{
66 9
		if ($this->output === null)
67
		{
68 1
			throw new LogicException('You must specify an IOInterface for output first.');
69
		}
70
71 8
		$this->output->setContent(
72 8
			$this->renderer->render($log)
73 8
		);
74
	}
75
76
	/**
77
	 * Sets the adaptor to use for reading change logs.
78
	 *
79
	 * @param IOInterface $input
80
	 */
81 11
	public function setInput(IOInterface $input)
82
	{
83 11
		$this->input = $input;
84
	}
85
86
	/**
87
	 * Sets the adaptor to use for writing change logs.
88
	 *
89
	 * @param IOInterface $output
90
	 */
91 11
	public function setOutput(IOInterface $output)
92
	{
93 11
		$this->output = $output;
94
	}
95
96
	/**
97
	 * Sets the adaptor to render with.
98
	 *
99
	 * @param RenderInterface $renderer
100
	 */
101 12
	public function setRenderer(RenderInterface $renderer)
102
	{
103 12
		$this->renderer = $renderer;
104
	}
105
106
	/**
107
	 * Sets the adaptor to parse with.
108
	 *
109
	 * @param ParserInterface $parser
110
	 */
111 11
	public function setParser(ParserInterface $parser)
112
	{
113 11
		$this->parser = $parser;
114
	}
115
116
}
117