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

CodeGeneratorConfig::setGenerateDocblock()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 2
Bugs 0 Features 1
Metric Value
c 2
b 0
f 1
dl 0
loc 4
ccs 0
cts 3
cp 0
rs 10
cc 1
eloc 3
nc 1
nop 1
crap 2
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
}