SystemBrowser.st
changeset 4806 439bed9def3a
parent 4526 704d9ce68ff7
child 4852 b9266dc55860
--- a/SystemBrowser.st	Tue Apr 08 18:37:42 2003 +0200
+++ b/SystemBrowser.st	Wed Apr 09 11:17:01 2003 +0200
@@ -4807,7 +4807,7 @@
 classWithNameSimilarTo:className
     "helper for class-name entry; finds a class by name tolerant w.r.t. case"
 
-    |nm lcName class allClasses|
+    |nm lcName class allClasses triedMatchers|
 
     (className startsWith:'Smalltalk::') ifTrue:[
         nm := className copyFrom:('Smalltalk::' size + 1).
@@ -4816,44 +4816,25 @@
     ].
 
     class := Smalltalk at:nm asSymbol.
-    class isBehavior ifTrue:[^ class].
+    class isBehavior ifTrue:[^ class].      "/ a direct hit
 
     lcName := className asLowercase.
     allClasses := Smalltalk allClasses.
-    class := allClasses 
-                    detect:[:cls | cls name asLowercase = lcName]
-                    ifNone:nil.
-    class notNil ifTrue:[^ class].
-
-    class := allClasses 
-                    detect:[:cls | cls name asLowercase startsWith:lcName]
-                    ifNone:nil.
-    class notNil ifTrue:[^ class].
-
-    class := allClasses 
-                    detect:[:cls | cls nameWithoutNameSpacePrefix asLowercase = lcName]
-                    ifNone:nil.
-    class notNil ifTrue:[^ class].
-
-    class := allClasses 
-                    detect:[:cls | cls nameWithoutNameSpacePrefix asLowercase startsWith:lcName]
-                    ifNone:nil.
-    class notNil ifTrue:[^ class].
-
-    class := allClasses 
-                    detect:[:cls | cls nameWithoutPrefix asLowercase = lcName]
-                    ifNone:nil.
-    class notNil ifTrue:[^ class].
-
-    class := allClasses 
-                    detect:[:cls | cls nameWithoutPrefix asLowercase startsWith:lcName]
-                    ifNone:nil.
-    class notNil ifTrue:[^ class].
-
-    class := allClasses 
-                    detect:[:cls | ('*' , lcName , '*') match:cls nameWithoutPrefix asLowercase]
-                    ifNone:nil.
-    ^ class
+
+    triedMatchers := OrderedCollection new.
+    triedMatchers add:[:cls | cls name asLowercase = lcName].       
+    triedMatchers add:[:cls | cls name asLowercase startsWith:lcName].      
+    triedMatchers add:[:cls | cls nameWithoutNameSpacePrefix asLowercase = lcName].      
+    triedMatchers add:[:cls | cls nameWithoutNameSpacePrefix asLowercase startsWith:lcName].      
+    triedMatchers add:[:cls | cls nameWithoutPrefix asLowercase = lcName].      
+    triedMatchers add:[:cls | cls nameWithoutPrefix asLowercase startsWith:lcName].      
+    triedMatchers add:[:cls | cls nameWithoutPrefix asLowercase includesString:lcName].      
+
+    triedMatchers do:[:eachTry |
+        class := allClasses detect:eachTry ifNone:nil.
+        class notNil ifTrue:[^ class].
+    ].
+    ^ nil  
 !
 
 extractClassAndSelectorFrom:aString into:aBlock
@@ -5005,7 +4986,7 @@
 !SystemBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/SystemBrowser.st,v 1.185 2003-02-04 08:42:37 ca Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/SystemBrowser.st,v 1.186 2003-04-09 09:17:01 cg Exp $'
 ! !
 
 SystemBrowser initialize!