SmallSense__CompletionEngine.st
changeset 120 4fefce92f5bb
parent 118 88e6fd734a11
child 131 ea84eea5a3c4
--- a/SmallSense__CompletionEngine.st	Fri Oct 04 08:01:47 2013 +0100
+++ b/SmallSense__CompletionEngine.st	Fri Oct 04 08:25:15 2013 +0100
@@ -34,9 +34,58 @@
 
     codeView := aCodeView2OrTextEditView.
     result := CompletionResult new.
+
     ^ self complete.
 
     "Created: / 02-10-2013 / 13:24:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 03-10-2013 / 11:18:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 03-10-2013 / 16:42:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!CompletionEngine methodsFor:'completion-individual'!
+
+addMethodsStartingWith: prefix
+    ^ self addMethodsStartingWith: prefix filter: nil
+
+    "Created: / 24-07-2013 / 13:10:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 03-10-2013 / 17:59:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+addMethodsStartingWith: prefix filter: filterOrNil
+    | selectors filter |
+
+    selectors := Dictionary new.
+    filter := filterOrNil  isNil ifTrue:[ [:method | true ] ] ifFalse:[ filterOrNil  ].
+
+    Smalltalk allClassesDo:[:class|
+        class selectorsAndMethodsDo:[:selector :mthd |             
+            ((selector startsWith: prefix) and:[filter value: mthd]) ifTrue:[
+                | class skip |
+
+                class := mthd mclass superclass.
+                skip := false.
+                [ skip not and:[class notNil] ] whileTrue:[
+                    (class methodDictionary includesKey: selector) ifTrue:[
+                        skip := true.
+                    ].
+                    class := class superclass.
+                ].
+                skip ifFalse:[
+                    | classes |
+
+                    classes := selectors at: selector ifAbsentPut:[ Set new ].
+                    classes add: mthd mclass.
+                ].
+            ]
+        ].
+    ].
+
+    selectors keysAndValuesDo: [:selector :classes|
+        result add:(MethodPO 
+                name:selector
+                description:"met source"nil
+                class:(classes size == 1 ifTrue:[classes anElement] ifFalse:[classes])).
+    ]
+
+    "Created: / 03-10-2013 / 17:56:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+