handle NS.Classname (vw files)
authorClaus Gittinger <cg@exept.de>
Wed, 18 Jun 2003 17:44:53 +0200
changeset 1300 3847c8f8a4f5
parent 1299 e7cb20de4618
child 1301 b747d11e7ff8
handle NS.Classname (vw files) translate vw namespaces
ClassChange.st
--- a/ClassChange.st	Wed Jun 18 17:44:33 2003 +0200
+++ b/ClassChange.st	Wed Jun 18 17:44:53 2003 +0200
@@ -150,15 +150,28 @@
 apply
     "apply the change"
 
+    Parser evaluate:(self source)
+"/    |ns|
+"/
+"/    ns := Class nameSpaceQuerySignal isHandled 
+"/            ifTrue:[ Class nameSpaceQuerySignal query ]
+"/            ifFalse:[ self nameSpace ].
+"/
+"/    Class nameSpaceQuerySignal answer:ns do:[
+"/        Parser evaluate:(self source)
+"/    ].
+!
+
+fullClassName
     |ns|
 
-    ns := Class nameSpaceQuerySignal isHandled 
-            ifTrue:[ Class nameSpaceQuerySignal query ]
-            ifFalse:[ self nameSpace ].
+    "/ used to be ^ className;
+    "/
+    "/ now include a translation from vw namespace to stx nameSpace
 
-    Class nameSpaceQuerySignal answer:ns do:[
-        Parser evaluate:(self source)
-    ].
+    ns := self nameSpaceName.
+    ns = 'Smalltalk' ifTrue:[^ self className].
+    ^ ns , '::' , self className
 !
 
 nameSpace
@@ -171,13 +184,18 @@
 !
 
 nameSpaceName
+    |ns cnm idx|
+
     (className includes:$:) ifTrue:[
         "/ in a namespace
         ^ className upTo:$:.
     ].
-    (className includes:$.) ifTrue:[
+    (idx := className indexOf:$.) ~~ 0 ifTrue:[
         "/ in a namespace
-        ^ className upTo:$..
+        ns := className copyTo:(idx - 1).
+        cnm := className copyFrom:(idx + 1).
+        "cheat: VW namespaces"
+        ^ self nameSpaceForVWNamespace:ns class:cnm ifAbsent:ns
     ].
     ^ nil
 ! !
@@ -198,12 +216,12 @@
 !ClassChange methodsFor:'queries'!
 
 cutNameSpaceOf:aString
+    |dotIndex|
+
     aString notNil ifTrue:[
-        (aString startsWith:'Kernel.') ifTrue:[
-            ^ aString copyFrom:'Kernel.' size+1
-        ].
-        (aString startsWith:'Core.') ifTrue:[
-            ^ aString copyFrom:'Core.' size+1
+        dotIndex := aString indexOf:$..
+        dotIndex ~~ 0 ifTrue:[
+            ^ aString copyFrom:dotIndex+1
         ].
     ].
     ^ aString
@@ -211,10 +229,19 @@
 
 isClassChange
     ^ true
+!
+
+nameSpaceForVWNamespace:ns class:className ifAbsent:default
+    ns = 'Core' ifTrue:[^ 'Smalltalk'].
+    ns = 'Kernel' ifTrue:[^ 'Smalltalk'].
+    ns = 'Graphics' ifTrue:[^ 'Smalltalk'].
+    ns = 'OS' ifTrue:[^ 'Smalltalk'].
+    ns = 'Smalltalk' ifTrue:[^ 'Smalltalk'].
+    ^ default value
 ! !
 
 !ClassChange class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic3/ClassChange.st,v 1.35 2003-06-03 16:24:51 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/ClassChange.st,v 1.36 2003-06-18 15:44:53 cg Exp $'
 ! !