Completed
Pull Request — master (#64)
by Aleh
03:02
created

ClassNameCompleter::getPostfix()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 7
rs 9.4285
cc 2
eloc 4
nc 2
nop 1
1
<?php
2
3
namespace Padawan\Domain\Completer;
4
5
use Padawan\Domain\Project;
6
use Padawan\Domain\Completion\Context;
7
use Padawan\Domain\Completion\Entry;
8
9
class ClassNameCompleter extends AbstractInCodeBodyCompleter
10
{
11
    public function getEntries(Project $project, Context $context) {
12
        $entries = [];
13
        $postfix = $this->getPostfix($context);
14
        foreach ($project->getIndex()->getClasses() as $fqcn => $class) {
15
            if (!empty($postfix) && strpos($fqcn, $postfix) === false) {
16
                continue;
17
            }
18
            $fqcn = $context->getScope()->getUses()->findAlias($class->fqcn);
19
            $complete = str_replace($postfix, "", $fqcn);
20
            $entries[] = new Entry(
21
                $complete, '', '',
22
                $fqcn
23
            );
24
        }
25
        return $entries;
26
    }
27
28
    public function canHandle(Project $project, Context $context)
29
    {
30
        $postfix = $this->getPostfix($context);
31
        return $context->isClassName()
32
            || (
33
                parent::canHandle($project, $context)
34
                && ($context->isString() || $context->isEmpty())
35
                && strlen($postfix) > 0
36
            );
37
    }
38
39
    private function getPostfix(Context $context)
40
    {
41
        if (is_string($context->getData())) {
42
            return trim($context->getData());
43
        }
44
        return "";
45
    }
46
}
47