Passed
Push — master ( b1d8eb...cab9a5 )
by Josh
03:28
created

BaseImplementation   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Test Coverage

Coverage 87.5%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 5
eloc 7
c 1
b 0
f 0
dl 0
loc 50
ccs 7
cts 8
cp 0.875
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 2 1
A validate() 0 5 3
A output() 0 5 1
1
<?php declare(strict_types=1);
2
3
/**
4
* @package   s9e\RegexpBuilder
5
* @copyright Copyright (c) 2016-2020 The s9e authors
6
* @license   http://www.opensource.org/licenses/mit-license.php The MIT License
7
*/
8
namespace s9e\RegexpBuilder\Output;
9
10
use InvalidArgumentException;
11
12
abstract class BaseImplementation implements OutputInterface
13
{
14
	/**
15
	* @var integer
16
	*/
17
	protected $maxValue = 0;
18
19
	/**
20
	* @var integer
21
	*/
22
	protected $minValue = 0;
23
24
	/**
25
	* @param array $options
26
	*/
27 19
	public function __construct(array $options = [])
28
	{
29
	}
30
31
	/**
32
	* {@inheritdoc}
33
	*/
34 53
	public function output(int $value): string
35
	{
36 53
		$this->validate($value);
37
38 47
		return $this->outputValidValue($value);
39
	}
40
41
	/**
42
	* Validate given value
43
	*
44
	* @param  integer $value
45
	* @return void
46
	*/
47 51
	protected function validate(int $value): void
48
	{
49 51
		if ($value < $this->minValue || $value > $this->maxValue)
50
		{
51 4
			throw new InvalidArgumentException('Value ' . $value . ' is out of bounds (' . $this->minValue . '..' . $this->maxValue . ')');
52
		}
53
	}
54
55
	/**
56
	* Serialize a valid value into a character
57
	*
58
	* @param  integer $value
59
	* @return string
60
	*/
61
	abstract protected function outputValidValue(int $value): string;
62
}