[squeak-dev] The Trunk: System-mt.1192.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue Nov 10 07:57:42 UTC 2020
Marcel Taeumel uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-mt.1192.mcz
==================== Summary ====================
Name: System-mt.1192
Author: mt
Time: 10 November 2020, 8:57:39.098594 am
UUID: 287a932b-bf27-334a-b0b3-2db1fc95027d
Ancestors: System-mt.1191
Makes the order of inserted/removed lines in text diffs configurable. Set the default to the unix-y way, which is remove-before-insert.
=============== Diff against System-mt.1191 ===============
Item was changed:
Object subclass: #TextDiffBuilder
instanceVariableNames: 'xLines yLines ignoreLineEndings'
+ classVariableNames: 'IgnoreLineEndings InsertTextAttributes NormalTextAttributes RemoveTextAttributes ShowInsertBeforeRemove'
- classVariableNames: 'IgnoreLineEndings InsertTextAttributes NormalTextAttributes RemoveTextAttributes'
poolDictionaries: ''
category: 'System-FilePackage'!
!TextDiffBuilder commentStamp: 'fbs 9/23/2013 08:58' prior: 0!
I implement the diff algorithm. I can show the differences between two texts. See my method comments for further information.
Instance Variables
xLines: <Array>
yLines: <Array>
ignoreLineEndings: <Boolean>
xLines
- an Array of DiffElements which is created from the first input text
yLines
- an Array of DiffElements which is created from the second input text
ignoreLineEndings
- a Boolean describing whether lines only differing in the line endings should be reported as a difference, or not!
Item was added:
+ ----- Method: TextDiffBuilder class>>showInsertBeforeRemove (in category 'preferences') -----
+ showInsertBeforeRemove
+ "Answer a boolean telling if line endings differences should be ignored or emphasized"
+
+ <preference: 'Show inserted before removed lines'
+ category: 'TextDiff'
+ description: 'When enabled, the diff builder will print added lines before the removed ones to show replacement.'
+ type: #Boolean>
+
+ ^ ShowInsertBeforeRemove ifNil: [ false ]!
Item was added:
+ ----- Method: TextDiffBuilder class>>showInsertBeforeRemove: (in category 'preferences') -----
+ showInsertBeforeRemove: aBoolean
+
+ ShowInsertBeforeRemove := aBoolean.!
Item was changed:
----- Method: TextDiffBuilder>>patchSequenceDoIfMatch:ifInsert:ifRemove: (in category 'creating patches') -----
patchSequenceDoIfMatch: matchBlock ifInsert: insertBlock ifRemove: removeBlock
"I'm the general purpose method to iterate through the patch sequence. See my senders to learn how to use me."
+ | aLines bLines aBlock bBlock aLine aLineStream |
+ self class showInsertBeforeRemove
+ ifTrue: [ aLines := xLines. bLines := yLines. aBlock := insertBlock. bBlock := removeBlock ]
+ ifFalse: [ aLines := yLines. bLines := xLines. aBlock := removeBlock. bBlock := insertBlock ].
+ aLineStream := aLines readStream.
+ bLines do: [ :bLine |
+ bLine hasMatch
+ ifFalse: [
+ aBlock value: bLine string ]
- | xLine xLineStream |
- xLineStream := xLines readStream.
- yLines do: [ :yLine |
- yLine hasMatch
- ifFalse: [ insertBlock value: yLine string ]
ifTrue: [
+ [ (aLine := aLineStream next) == nil or: [ aLine == bLine match ] ]
+ whileFalse: [ bBlock value: aLine string ].
+ matchBlock value: bLine string ] ].
+ [ (aLine := aLineStream next) == nil ] whileFalse: [
+ bBlock value: aLine string ]!
- [ (xLine := xLineStream next) == nil or: [ xLine == yLine match ] ]
- whileFalse: [ removeBlock value: xLine string ].
- matchBlock value: yLine string ] ].
- [ (xLine := xLineStream next) == nil ] whileFalse: [
- removeBlock value: xLine string ]!
More information about the Squeak-dev
mailing list
|