Levente Uzonyi uploaded a new version of System to project The Trunk: http://source.squeak.org/trunk/System-ul.389.mcz
==================== Summary ====================
Name: System-ul.389 Author: ul Time: 2 November 2010, 10:06:25.693 pm UUID: 77647d29-a395-fe4e-a7d0-013850bdfae2 Ancestors: System-ul.388
- a bit faster ClassDiffBuilder >> #split: - TextDiffBuilder >> #buildDisplayPatch uses AttributedTextStream instead of TextStream, so it takes O(n) time to build a display patch, instead of O(n^2)
=============== Diff against System-ul.388 ===============
Item was changed: ----- Method: ClassDiffBuilder>>split: (in category 'private') ----- split: aString "I return an array with aString splitted by Character >> #separators."
^Array streamContents: [ :stream | + | input separators | + input := aString readStream. + separators := CharacterSet separators. + [ input atEnd ] whileFalse: [ + | word separator | + word := input + upToAnyOf: separators + do: [ :matchingSeparator | + separator := matchingSeparator ]. + stream nextPut: (separator + ifNil: [ word ] + ifNotNil: [ word, separator asString ]) ] ]! - | out | - out := aString copy writeStream. - aString do: [ :c | - out nextPut: c. - c isSeparator ifTrue:[ - stream nextPut: out contents. - out reset ] ]. - out position = 0 ifFalse: [ - stream nextPut: out contents ] ]!
Item was changed: ----- Method: TextDiffBuilder>>buildDisplayPatch (in category 'creating patches') ----- buildDisplayPatch
+ | stream | + stream := AttributedTextStream new. + self + patchSequenceDoIfMatch: [ :string | + self print: string withAttributes: NormalTextAttributes on: stream ] + ifInsert: [ :string | + self print: string withAttributes: InsertTextAttributes on: stream ] + ifRemove: [ :string | + self print: string withAttributes: RemoveTextAttributes on: stream ]. + ^stream contents! - ^Text streamContents: [ :stream | - self - patchSequenceDoIfMatch: [ :string | - self print: string withAttributes: NormalTextAttributes on: stream ] - ifInsert: [ :string | - self print: string withAttributes: InsertTextAttributes on: stream ] - ifRemove: [ :string | - self print: string withAttributes: RemoveTextAttributes on: stream ] ]!
packages@lists.squeakfoundation.org