class: VersionDiffBrowser
authorClaus Gittinger <cg@exept.de>
Tue, 09 Jul 2013 13:33:38 +0200
changeset 13137 b552b691d338
parent 13136 ce8fcb7a8b03
child 13138 ba213eb5b3f8
class: VersionDiffBrowser comment/format in: #classBeingCompared #updateLists changed: #printStringForChange: care for classname in list if two diferent classes are compared.
VersionDiffBrowser.st
--- a/VersionDiffBrowser.st	Tue Jul 09 11:42:21 2013 +0200
+++ b/VersionDiffBrowser.st	Tue Jul 09 13:33:38 2013 +0200
@@ -28,7 +28,8 @@
 !
 
 HierarchicalItem subclass:#ClassChangeSet
-	instanceVariableNames:'classBeingCompared labelA labelB diffSet versionA versionB'
+	instanceVariableNames:'class1BeingCompared class2BeingCompared labelA labelB diffSet
+		versionA versionB'
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:VersionDiffBrowser
@@ -830,8 +831,7 @@
 !
 
 classBeingCompared
-    "
-    gets the class from the change set which is compared.
+    "returns the class from the change set which is compared.
 
     <return: Class>
     "
@@ -1758,7 +1758,13 @@
 
     |m changeClassName classOrMetaString useChangesString selectorString
      singleComparedClass singleComparedClassesName singleComparedMetaclassesName
-     printString|
+     printString class1 class2|
+
+(aChange isMethodChange and:[aChange selector == #defaultResumeValue]) ifTrue:[
+self halt
+].
+    class1 := self classChangeSet class1BeingCompared.
+    class2 := self classChangeSet class2BeingCompared.
 
     (singleComparedClass := self classBeingCompared) notNil ifTrue:[
         singleComparedClassesName := singleComparedClass name.
@@ -1783,16 +1789,22 @@
     useChangesString := false.
     classOrMetaString := ''.
 
-    (changeClassName = singleComparedClassesName) ifTrue:[
-        "/ changeClassName := ''.
-        useChangesString := true.
+    (class1 notNil 
+    and:[ class2 notNil
+    and:[ class1 ~= class2 ]]) ifTrue:[
+        changeClassName := ''.
     ] ifFalse:[
-        (changeClassName = singleComparedMetaclassesName) ifTrue:[
-            "/ classOrMetaString := ' class'.
+        (changeClassName = singleComparedClassesName) ifTrue:[
+            "/ changeClassName := ''.
             useChangesString := true.
         ] ifFalse:[
-            ((changeClassName includes:$:) and:[ changeClassName startsWith:((singleComparedClassesName ? ''),'::') ]) ifTrue:[
-                changeClassName := changeClassName copyFrom:(singleComparedClassesName,'::') size+1.
+            (changeClassName = singleComparedMetaclassesName) ifTrue:[
+                "/ classOrMetaString := ' class'.
+                useChangesString := true.
+            ] ifFalse:[
+                ((changeClassName includes:$:) and:[ changeClassName startsWith:((singleComparedClassesName ? ''),'::') ]) ifTrue:[
+                    changeClassName := changeClassName copyFrom:(singleComparedClassesName,'::') size+1.
+                ].
             ].
         ].
     ].
@@ -1800,6 +1812,7 @@
     selectorString := ''.
     (aChange isMethodChange) ifTrue:[
         selectorString := aChange selector.
+
         aChange changeClass notNil ifTrue:[
             m := aChange changeMethod.
             m notNil ifTrue:[
@@ -1897,6 +1910,10 @@
 !
 
 updateLists
+    "walk over the changeSet and setup the 3 lists:
+     onlyInA, changed, onlyInB,
+     Optionally filter extensions, categoryChanges and versionMethods"
+
     |classChangeSet listOnlyInA listOnlyInB listChanged
      printStringGenerator sortBlockForChangeLists filteredList
      isIgnoredChange numIgnoredExtensions numIgnoredVersionMethods 
@@ -2152,7 +2169,7 @@
     |aStream sourceA sourceB theChangeSetA theChangeSetB theClassChangeSet|
 
     theClassChangeSet := self new.
-    theClassChangeSet classBeingCompared:classA.
+    theClassChangeSet class1BeingCompared:classA class2BeingCompared:classB.
     theClassChangeSet labelA:aLabelA.
     theClassChangeSet labelB:aLabelB.
 
@@ -2169,25 +2186,25 @@
     theChangeSetA:=self changeSetForClass:classA andSource:sourceA.
     theChangeSetB:=self changeSetForClass:classB andSource:sourceB.
     theChangeSetA isNil
-	ifTrue: [theChangeSetA := ChangeSet new].
+        ifTrue: [theChangeSetA := ChangeSet new].
     theChangeSetB isNil
-	ifTrue: [theChangeSetB := ChangeSet new].
+        ifTrue: [theChangeSetB := ChangeSet new].
 
     "/ just in case (if comparing a class against another),
     "/ unify the classes of the changes (to avoid that all changes are detected as different)
 
     theChangeSetB do:[:eachChange |
-	eachChange isMethodChange ifTrue:[
-	    eachChange changeClass isMeta ifTrue:[
-		eachChange changeClass ~~ classA theMetaclass ifTrue:[
-		    eachChange changeClass:classA theMetaclass.
-		]
-	    ] ifFalse:[
-		eachChange changeClass ~~ classA theNonMetaclass ifTrue:[
-		    eachChange changeClass:classA theNonMetaclass.
-		]
-	    ].
-	].
+        eachChange isMethodChange ifTrue:[
+            eachChange changeClass isMeta ifTrue:[
+                eachChange changeClass ~~ classA theMetaclass ifTrue:[
+                    eachChange changeClass:classA theMetaclass.
+                ]
+            ] ifFalse:[
+                eachChange changeClass ~~ classA theNonMetaclass ifTrue:[
+                    eachChange changeClass:classA theNonMetaclass.
+                ]
+            ].
+        ].
     ].
     "/ remove all #initialize doIts
     theChangeSetA := theChangeSetA select:[:eachChange | eachChange isDoIt not or:[eachChange isInitialize not]].
@@ -2300,16 +2317,35 @@
 
 !VersionDiffBrowser::ClassChangeSet methodsFor:'accessing'!
 
+class1BeingCompared
+    "returns the class which is compared"
+
+    ^ class1BeingCompared
+!
+
+class1BeingCompared:class1 class2BeingCompared:class2
+    "returns the class which is compared"
+
+    class1BeingCompared := class1.
+    class2BeingCompared := class2
+!
+
+class2BeingCompared
+    "returns the class which is compared"
+
+    ^ class2BeingCompared
+!
+
 classBeingCompared
-    "returns the value of the class which is compared"
-
-    ^ classBeingCompared
+    "returns the class which is compared"
+
+    ^ class1BeingCompared
 !
 
 classBeingCompared:something
     "set the value of the class which is compared"
 
-    classBeingCompared := something.
+    class1BeingCompared := class2BeingCompared := something.
 !
 
 diffSet
@@ -2448,10 +2484,10 @@
 !VersionDiffBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.113 2013-06-06 17:12:57 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.114 2013-07-09 11:33:38 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.113 2013-06-06 17:12:57 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.114 2013-07-09 11:33:38 cg Exp $'
 ! !