Completed
Push — master ( f165ab...b465e2 )
by Thomas
02:42
created

CodeGeneratorConfig   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 109
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 74.47%

Importance

Changes 3
Bugs 0 Features 1
Metric Value
wmc 13
c 3
b 0
f 1
lcom 1
cbo 1
dl 0
loc 109
ccs 35
cts 47
cp 0.7447
rs 10

12 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 9 2
A getOptionalOptions() 0 8 1
A getDefaultOptions() 0 8 1
A getAllowedOptionTypes() 0 8 1
A getGenerateDocblock() 0 3 1
A setGenerateDocblock() 0 4 1
A getGenerateEmptyDocblock() 0 3 1
A setGenerateEmptyDocblock() 0 4 1
A getGenerateScalarTypeHints() 0 3 1
A setGenerateScalarTypeHints() 0 4 1
A getGenerateReturnTypeHints() 0 3 1
A setGenerateReturnTypeHints() 0 4 1
1
<?php
2
namespace gossi\codegen\config;
3
4
use Symfony\Component\OptionsResolver\OptionsResolver;
5
6
class CodeGeneratorConfig {
7
8
	protected $options;
9
10 19
	public function __construct(array $options = []) {
11 19
		$resolver = new OptionsResolver();
12 19
		$resolver->setDefined($this->getOptionalOptions());
13 19
		$resolver->setDefaults($this->getDefaultOptions());
14 19
		foreach ($this->getAllowedOptionTypes() as $option => $type) {
15 19
			$resolver->setAllowedTypes($option, $type);
16 19
		}
17 19
		$this->options = $resolver->resolve($options);
18 19
	}
19
20 19
	protected function getOptionalOptions() {
21
		return [
22 19
			'generateDocblock',
23 19
			'generateEmptyDocblock',
24 19
			'generateScalarTypeHints',
25 19
			'generateReturnTypeHints',
26 19
		];
27
	}
28
29 19
	protected function getDefaultOptions() {
30
		return [
31 19
			'generateDocblock' => true,
32 19
			'generateEmptyDocblock' => true,
33 19
			'generateScalarTypeHints' => false,
34 19
			'generateReturnTypeHints' => false,
35 19
		];
36
	}
37
38 19
	protected function getAllowedOptionTypes() {
39
		return [
40 19
			'generateDocblock' => 'bool',
41 19
			'generateEmptyDocblock' => 'bool',
42 19
			'generateScalarTypeHints' => 'bool',
43 19
			'generateReturnTypeHints' => 'bool',
44 19
		];
45
	}
46
47
	/**
48
	 * @return boolean
49
	 */
50 13
	public function getGenerateDocblock() {
51 13
		return $this->options['generateDocblock'];
52
	}
53
54
	/**
55
	 *
56
	 * @param boolean $generate
57
	 * @return $this
58
	 */
59
	public function setGenerateDocblock($generate) {
60
		$this->options['generateDocblock'] = $generate;
61
		return $this;
62
	}
63
64
	/**
65
	 * @return boolean
66
	 */
67 19
	public function getGenerateEmptyDocblock() {
68 19
		return $this->options['generateEmptyDocblock'];
69
	}
70
71
	/**
72
	 *
73
	 * @param boolean $generate
74
	 * @return $this
75
	 */
76
	public function setGenerateEmptyDocblock($generate) {
77
		$this->options['generateEmptyDocblock'] = $generate;
78
		return $this;
79
	}
80
81
	/**
82
	 * @return boolean
83
	 */
84 4
	public function getGenerateScalarTypeHints() {
85 4
		return $this->options['generateScalarTypeHints'];
86
	}
87
88
	/**
89
	 *
90
	 * @param boolean $generate
91
	 * @return $this
92
	 */
93
	public function setGenerateScalarTypeHints($generate) {
94
		$this->options['generateScalarTypeHints'] = $generate;
95
		return $this;
96
	}
97
98
	/**
99
	 * @return boolean
100
	 */
101 14
	public function getGenerateReturnTypeHints() {
102 14
		return $this->options['generateReturnTypeHints'];
103
	}
104
105
	/**
106
	 *
107
	 * @param boolean $generate
108
	 * @return $this
109
	 */
110
	public function setGenerateReturnTypeHints($generate) {
111
		$this->options['generateReturnTypeHints'] = $generate;
112
		return $this;
113
	}
114
}