Skip to content

Commit 1c2d7fd

Browse files
committed
added property parsing
1 parent 8ac93f7 commit 1c2d7fd

3 files changed

Lines changed: 34 additions & 4 deletions

File tree

src/Complete/Completer/ObjectCompleter.php

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
namespace Complete\Completer;
44

55
use Entity\Project;
6+
use Entity\FQCN;
67
use Entity\Node\MethodData;
8+
use Entity\Node\ClassProperty;
79
use Entity\Completion\Context;
810
use Entity\Completion\Entry;
911
use Entity\Completion\Scope;
@@ -46,8 +48,7 @@ protected function getEntriesForVar(
4648
$entries[] = $entry;
4749
}
4850
foreach($class->properties->all() AS $property){
49-
$entry = new Entry($property->name);
50-
$entries[] = $entry;
51+
$entries[] = $this->createEntryForProperty($property);
5152
}
5253
return $entries;
5354
}
@@ -73,8 +74,7 @@ protected function getEntriesForThis(
7374
$entries[] = $entry;
7475
}
7576
foreach($class->properties->all() AS $property){
76-
$entry = new Entry($property->name);
77-
$entries[] = $entry;
77+
$entries[] = $this->createEntryForProperty($property);
7878
}
7979
return $entries;
8080
}
@@ -92,5 +92,14 @@ protected function createEntryForMethod(MethodData $method){
9292
);
9393
}
9494

95+
protected function createEntryForProperty(ClassProperty $prop){
96+
$type = $prop->type instanceof FQCN ? $prop->type->toString() : 'mixed';
97+
return new Entry(
98+
$prop->name,
99+
$type
100+
);
101+
}
102+
103+
/** @property LoggerInterface */
95104
private $logger;
96105
}

src/Parser/CommentParser.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public function parse($doc){
2424
$text = $doc;
2525
if(is_array($doc)){
2626
$doc = array_shift($doc);
27+
var_dump($doc);
2728
$text = $doc->getText();
2829
}
2930
$comment = new Comment(
@@ -71,6 +72,7 @@ protected function createMethodParam(Tag $tag){
7172
protected function createVar(Tag $tag){
7273
$name = trim($tag->getVariableName(), '$');
7374
$param = new Variable($name);
75+
$param->setType($this->getFQCN($tag->getType()));
7476
return $param;
7577
}
7678
/**
@@ -108,5 +110,6 @@ protected function getContext(){
108110
return new Context($namespace, $aliases);
109111
}
110112

113+
/** @property UseParser */
111114
private $useParser;
112115
}

src/Parser/PropertyParser.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66
use PhpParser\Node\Stmt\PropertyProperty as Property;
77

88
class PropertyParser{
9+
10+
public function __construct(CommentParser $commentParser){
11+
$this->commentParser = $commentParser;
12+
}
13+
914
/**
1015
* Parses Property node to ClassProperty
1116
*
@@ -18,6 +23,19 @@ public function parse(Property $node, $modifier=0)
1823
$prop = new ClassProperty;
1924
$prop->name = $node->name;
2025
$prop->setModifier($modifier);
26+
$comments = $node->getAttribute("comments");
27+
if(is_array($comments)){
28+
$comment = $this->commentParser->parse(
29+
$comments[count($comments)-1]->getText()
30+
);
31+
$var = array_pop($comment->getVars());
32+
if($var->getName() === $prop->name){
33+
$prop->doc = $comment->getDoc();
34+
$prop->type = $var->getType();
35+
}
36+
}
2137
return $prop;
2238
}
39+
40+
private $commentParser;
2341
}

0 commit comments

Comments
 (0)