--- a/DoWhatIMeanSupport.st Thu Aug 21 18:25:56 2003 +0200
+++ b/DoWhatIMeanSupport.st Thu Aug 21 20:39:37 2003 +0200
@@ -58,7 +58,7 @@
"generate a reasonable default for a rename operation.
(used for rename category etc.)"
- |prefix suffix lastNewSize lastOldSize left right inserted|
+ |prefix suffix lastNewSize lastOldSize left right inserted deleted|
lastNewName isNil ifTrue:[ ^ nil].
@@ -132,8 +132,12 @@
prefix := lastOldName commonPrefixWith:lastNewName.
suffix := lastOldName commonSuffixWith:lastNewName.
+
(prefix size > 0) ifTrue:[
(suffix size > 0) ifTrue:[
+
+ prefix := prefix copyTo:(((lastNewName size - suffix size) min:(lastOldName size - suffix size)) min:prefix size).
+
"last rename was
'fooR' -> 'fooXR'
then, a good default for
@@ -141,8 +145,23 @@
"
left := lastOldName copyTo:prefix size.
right := lastOldName copyLast:suffix size.
- inserted := (lastNewName copyFrom:(left size + 1)) copyWithoutLast:(right size).
- ^ (oldName copyWithoutLast:right size) , inserted , (oldName copyLast:right size)
+ lastNewSize > lastOldSize ifTrue:[
+ inserted := (lastNewName copyFrom:(left size + 1)) copyWithoutLast:(right size).
+ inserted size > 0 ifTrue:[
+ ^ (oldName copyWithoutLast:right size) , inserted , (oldName copyLast:right size)
+ ].
+ ].
+ (oldName endsWith:suffix) ifTrue:[
+ deleted := (lastOldName copyFrom:(prefix size + 1)) copyWithoutLast:(suffix size).
+ ((oldName copyFrom:oldName size-suffix size-deleted size + 1) copyTo:deleted size) = deleted ifTrue:[
+ "last rename was
+ 'fooXR' -> 'fooR'
+ then, a good default for
+ 'barXS' would be 'barS'
+ "
+ ^ (oldName copyTo:oldName size-suffix size-deleted size) , suffix
+ ]
+ ]
].
(oldName endsWith:(lastOldName copyFrom:prefix size+1)) ifTrue:[
@@ -169,7 +188,13 @@
self goodRenameDefaultFor:'barXX' lastOld:'fooXX' lastNew:'fooYY'
self goodRenameDefaultFor:'XXbar' lastOld:'XXfoo' lastNew:'foo'
- self goodRenameDefaultFor:'bar2' lastOld:'foo1' lastNew:'foo01'
+ self goodRenameDefaultFor:'bar2' lastOld:'foo1' lastNew:'foo01'
+ self goodRenameDefaultFor:'barXY' lastOld:'fooXY' lastNew:'fooY'
+ self goodRenameDefaultFor:'bar' lastOld:'foo' lastNew:'fXoo'
+ self goodRenameDefaultFor:'bar' lastOld:'foo' lastNew:'fXXXoo'
+ self goodRenameDefaultFor:'bar' lastOld:'foo' lastNew:'foXXXo'
+
+ self goodRenameDefaultFor:'bar001' lastOld:'foo001' lastNew:'foo002_001'
"
!
@@ -293,5 +318,5 @@
!DoWhatIMeanSupport class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libwidg2/DoWhatIMeanSupport.st,v 1.12 2003-08-21 16:25:56 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libwidg2/DoWhatIMeanSupport.st,v 1.13 2003-08-21 18:39:37 cg Exp $'
! !