AbstractBuilder   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 57
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 6

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 9
lcom 2
cbo 6
dl 0
loc 57
ccs 21
cts 21
cp 1
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
build() 0 1 ?
A __construct() 0 5 1
A generate() 0 4 1
A ensureBlankLine() 0 5 3
A buildDocblock() 0 10 4
1
<?php
2
declare(strict_types=1);
3
4
namespace gossi\codegen\generator\builder;
5
6
use gossi\codegen\config\CodeGeneratorConfig;
7
use gossi\codegen\generator\ModelGenerator;
8
use gossi\codegen\generator\utils\Writer;
9
use gossi\codegen\model\AbstractModel;
10
use gossi\codegen\model\DocblockInterface;
11
12
abstract class AbstractBuilder {
13
14
	/** @var ModelGenerator */
15
	protected $generator;
16
17
	/** @var Writer */
18
	protected $writer;
19
20
	/** @var CodeGeneratorConfig */
21
	protected $config;
22
23 43
	public function __construct(ModelGenerator $generator) {
24 43
		$this->generator = $generator;
25 43
		$this->writer = $generator->getWriter();
26 43
		$this->config = $generator->getConfig();
27 43
	}
28
29
	/**
30
	 * @param AbstractModel $model
31
	 * @return void
32
	 */
33
	abstract public function build(AbstractModel $model): void;
34
35
	/**
36
	 * @param AbstractModel $model
37
	 * @return void
38
	 */
39 6
	protected function generate(AbstractModel $model): void {
40 6
		$builder = $this->generator->getFactory()->getBuilder($model);
41 6
		$builder->build($model);
42 6
	}
43
44
	/**
45
	 * @return void
46
	 */
47 35
	protected function ensureBlankLine(): void {
48 35
		if (!$this->writer->endsWith("\n\n") && strlen($this->writer->rtrim()->getContent()) > 0) {
49 5
			$this->writer->writeln();
50
		}
51 35
	}
52
53
	/**
54
	 * @param DocblockInterface $model
55
	 * @return void
56
	 */
57 35
	protected function buildDocblock(DocblockInterface $model): void {
58 35
		$this->ensureBlankLine();
59 35
		if ($this->config->getGenerateDocblock()) {
60 3
			$model->generateDocblock();
61
		}
62 35
		$docblock = $model->getDocblock();
63 35
		if (!$docblock->isEmpty() || $this->config->getGenerateEmptyDocblock()) {
64 3
			$this->writer->writeln($docblock->toString());
65
		}
66 35
	}
67
68
}
69