# HG changeset patch # User Claus Gittinger # Date 1343301711 -7200 # Node ID c0d549a59039a7d4939c7cd231a563029ebd928c # Parent 6ac82bdbffbc3b26180dc5ded990e417e54de877 added: #previousVersions: changed: #previousVersion #previousVersions refactored diff -r 6ac82bdbffbc -r c0d549a59039 Method.st --- a/Method.st Thu Jul 26 11:43:46 2012 +0200 +++ b/Method.st Thu Jul 26 13:21:51 2012 +0200 @@ -2988,28 +2988,34 @@ ! previousVersion - "return the receivers previous versions source code" - - |sel cls previous| - - sel := self selector. - sel isNil ifTrue:[ ^ nil ]. - - cls := self mclass. - cls isNil ifTrue:[ ^ nil ]. - - ChangeSet current reverseDo:[:change | - (change isMethodChange - and:[ (change selector == sel) - and:[ change changeClass == cls ]]) - ifTrue:[ - previous := change previousVersion. - previous notNil ifTrue:[ - ^ previous - ] - ] - ]. - ^ nil. + "return the receivers previous version's source code" + + |previous| + + previous := self previousVersions:2. + previous isEmptyOrNil ifTrue:[^ nil]. + ^ previous first. + +"/ |sel cls previous| +"/ +"/ sel := self selector. +"/ sel isNil ifTrue:[ ^ nil ]. +"/ +"/ cls := self mclass. +"/ cls isNil ifTrue:[ ^ nil ]. +"/ +"/ ChangeSet current reverseDo:[:change | +"/ (change isMethodChange +"/ and:[ (change selector == sel) +"/ and:[ change changeClass == cls ]]) +"/ ifTrue:[ +"/ previous := change previousVersion. +"/ previous notNil ifTrue:[ +"/ ^ previous +"/ ] +"/ ] +"/ ]. +"/ ^ nil. "/ history := Class methodHistory. "/ history isNil ifTrue:[^ nil]. @@ -3029,7 +3035,7 @@ "/ ^ entry second. "/ ^ history at:self ifAbsent:nil - "Modified: 7.11.1996 / 19:06:22 / cg" + "Modified: / 26-07-2012 / 13:16:34 / cg" ! previousVersionCode @@ -3044,7 +3050,16 @@ ! previousVersions - "return a collection of the receivers previous versions (sources)" + "return a collection of the receiver's previous versions (sources)" + + ^ self previousVersions:nil + + "Modified (comment): / 26-07-2012 / 12:04:15 / cg" +! + +previousVersions:count + "return a collection of the receiver's count previous versions (sources). + A nil count will retrieve all versions" |sel cls versions lastChange firstSrc last| @@ -3057,12 +3072,15 @@ versions := OrderedCollection new. ChangeSet current reverseDo:[:change | - (change isMethodChange - and:[ (change selector == sel) - and:[ change changeClass == cls ]]) + (change isMethodChange + and:[ (change selector == sel) + and:[ change changeClass == cls ]]) ifTrue:[ versions addFirst:change. lastChange := change. + (count notNil and:[versions size == count]) ifTrue:[ + ^ versions + ] ] ]. @@ -3081,6 +3099,12 @@ ] ]. ^ versions + + " + (Method compiledMethodAt:#previousVersions:) previousVersions:nil + " + + "Created: / 26-07-2012 / 11:59:57 / cg" ! readsField:instVarIndex @@ -3665,11 +3689,11 @@ !Method class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.388 2012-07-23 09:17:47 cg Exp $' + ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.389 2012-07-26 11:21:51 cg Exp $' ! version_CVS - ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.388 2012-07-23 09:17:47 cg Exp $' + ^ '$Header: /cvs/stx/stx/libbasic/Method.st,v 1.389 2012-07-26 11:21:51 cg Exp $' ! version_SVN