Completed
Push — master ( 55b21a...aec22b )
by Thomas
06:20
created

StructParserPart::visitStruct()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 11
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 2

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 11
ccs 9
cts 9
cp 1
rs 9.4285
cc 2
eloc 8
nc 2
nop 1
crap 2
1
<?php
2
namespace gossi\codegen\parser\visitor\parts;
3
4
use PhpParser\Node\Stmt\ClassLike;
5
use PhpParser\Node\Stmt\TraitUse;
6
use PhpParser\Node\Stmt\Namespace_;
7
use PhpParser\Node\Stmt\UseUse;
8
9
trait StructParserPart {
10
	
11
	/**
12
	 * @return AbstractPhpStruct
13
	 */
14
	abstract protected function getStruct();
15
	
16 16
	public function visitStruct(ClassLike $node) {
17 16
		$struct = $this->getStruct();
18 16
		$struct->setName($node->name);
19
	
20 16
		if (($doc = $node->getDocComment()) !== null) {
21 7
			$struct->setDocblock($doc->getReformattedText());
22 7
			$docblock = $struct->getDocblock();
23 7
			$struct->setDescription($docblock->getShortDescription());
24 7
			$struct->setLongDescription($docblock->getLongDescription());
25
		}
26 16
	}
27
	
28 3
	public function visitTraitUse(TraitUse $node) {
29 3
		$struct = $this->getStruct();
30
		
31 3
		foreach ($node->traits as $trait) {
32 3
			$struct->addTrait(implode('\\', $trait->parts));
33
		}
34 3
	}
35
	
36 13
	public function visitNamespace(Namespace_ $node) {
37 13
		if ($node->name !== null) {
38 13
			$this->getStruct()->setNamespace(implode('\\', $node->name->parts));
39
		}
40 13
	}
41
	
42 1
	public function visitUseStatement(UseUse $node) {
43 1
		$name = implode('\\', $node->name->parts);
44 1
		$alias = !empty($node->alias) ? $node->alias : null;
45
	
46 1
		$this->getStruct()->addUseStatement($name, $alias);
47 1
	}
48
	
49
}