33namespace Complete ;
44
55use Entity \Project ;
6+ use Entity \Completion \Scope ;
67use Parser \Parser ;
78use Generator \IndexGenerator ;
89use Entity \Completion \Entry ;
910use Entity \Completion \Context ;
1011use Complete \Completer \Completer ;
12+ use Complete \Resolver \ContextResolver ;
13+ use Complete \Resolver \ScopeResolver ;
1114
1215class ContentManager {
13- private $ parser ;
14- private $ generator ;
15- private $ contextResolver ;
16- private $ completer ;
17-
1816 public function __construct (
1917 Parser $ parser ,
2018 IndexGenerator $ generator ,
2119 ContextResolver $ contextResolver ,
20+ ScopeResolver $ scopeResolver ,
2221 Completer $ completer
2322 ){
2423 $ this ->parser = $ parser ;
2524 $ this ->generator = $ generator ;
2625 $ this ->contextResolver = $ contextResolver ;
26+ $ this ->scopeResolver = $ scopeResolver ;
2727 $ this ->completer = $ completer ;
2828 }
2929 public function createCompletion (
@@ -42,9 +42,14 @@ public function createCompletion(
4242 );
4343 try {
4444 $ this ->updateFileIndex ($ project , $ lines , $ file );
45+ $ scope = $ this ->findScope (
46+ $ project , implode ("\n" , $ lines ), $ line , $ file
47+ );
48+ }
49+ catch (\Exception $ e ){
50+ $ scope = new Scope ;
4551 }
46- catch (\Exception $ e ){}
47- $ entries = $ this ->findEntries ($ project , $ completionLine , $ column , $ lines );
52+ $ entries = $ this ->findEntries ($ project , $ scope , $ completionLine , $ column , $ lines );
4853 }
4954 elseif (!empty ($ content )) {
5055 $ this ->updateFileIndex ($ project , $ content , $ file );
@@ -55,9 +60,12 @@ public function createCompletion(
5560 "context " => []
5661 ];
5762 }
58- protected function findEntries (Project $ project , $ badLine , $ column , $ lines ){
63+ protected function findEntries (Project $ project , Scope $ scope , $ badLine , $ column , $ lines ){
5964 $ context = $ this ->contextResolver ->getContext ($ badLine , $ column );
60- return $ this ->completer ->getEntries ($ project , $ context );
65+ return $ this ->completer ->getEntries ($ project , $ context , $ scope );
66+ }
67+ protected function findScope (Project $ project , $ content , $ line , $ file ){
68+ return $ this ->scopeResolver ->findScope ($ project , $ content , $ line , $ file );
6169 }
6270 /**
6371 * @TODO
@@ -97,4 +105,10 @@ protected function updateFileIndex(Project $project, $lines, $file){
97105 $ nodes
98106 );
99107 }
108+
109+ private $ parser ;
110+ private $ generator ;
111+ private $ contextResolver ;
112+ private $ scopeResolver ;
113+ private $ completer ;
100114}
0 commit comments