# HG changeset patch # User Claus Gittinger # Date 1373369618 -7200 # Node ID b552b691d33856db5e9df3813e2737933d9cf7b9 # Parent ce8fcb7a8b03d0764ec16a6c80e9bf5e0b925689 class: VersionDiffBrowser comment/format in: #classBeingCompared #updateLists changed: #printStringForChange: care for classname in list if two diferent classes are compared. diff -r ce8fcb7a8b03 -r b552b691d338 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. " @@ -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 $' ! !