[squeak-dev] The Trunk: Collections-dtl.802.mcz

David T. Lewis lewis at mail.msen.com
Thu Jul 19 13:49:45 UTC 2018


This is the update from Collections-kks.803, with a change to Text class>>string:runs:
to ensure that the runs check is done. I moved Collections-kks.803 from inbox
to treated inbox.

Dave

On Thu, Jul 19, 2018 at 04:44:57AM +0000, commits at source.squeak.org wrote:
> David T. Lewis uploaded a new version of Collections to project The Trunk:
> http://source.squeak.org/trunk/Collections-dtl.802.mcz
> 
> ==================== Summary ====================
> 
> Name: Collections-dtl.802
> Author: dtl
> Time: 19 July 2018, 12:40:11.186143 am
> UUID: 95497d30-f52f-4f82-ac8c-3e65cfa30df1
> Ancestors: Collections-cmm.801
> 
> Change Text class>>string:runs: to call setString:setRunsChecking: instead of setString:setRuns: to prevent creating a Text with run length not matching string length. This fixes the problem originally reported by Tim Johnson in http://lists.squeakfoundation.org/pipermail/squeak-dev/2018-July/199461.html
> 
> Add patch by K K Subbu to fix instantiating text when the string and the runarray are of mismatched lengths. This allows a filein to retain text attributes even if the runarray does not match the string length, as may be the case for a fileIn that had been edited externally (otherwise the text will be converted to a string without the intended attributes).
> 
> Name: Collections-kks.803
> Author: kks
> Time: 14 July 2018, 11:14:34.247017 pm
> UUID: c6ea08ba-fcdd-46f8-89c0-c61d0d524531
> Ancestors: Collections-dtl.802
> 
> Attempt to retain as much styling as possible while filing in text from streams where the runs may fall short or extend beyond the string.
> 
> Based on Bob's suggestions at http://lists.squeakfoundation.org/pipermail/squeak-dev/2018-July/199530.html
> 
> =============== Diff against Collections-cmm.801 ===============
> 
> Item was changed:
>   ----- Method: Text class>>string:runs: (in category 'private') -----
>   string: aString runs: anArray
>    
> + 	^self basicNew setString: aString setRunsChecking: anArray!
> - 	^self basicNew setString: aString setRuns: anArray!
> 
> Item was changed:
>   ----- Method: Text>>setString:setRunsChecking: (in category 'private') -----
>   setString: aString setRunsChecking: aRunArray
> + 	| stringSize runsSize |
> - 	"Check runs and do the best you can to make them fit..."
> - 
>   	string := aString.
> - 	"check the runs"
>   	aRunArray ifNil: [^ aString asText].
> - 	(aRunArray isKindOf: RunArray) ifFalse: [^ aString asText].
> - 	aRunArray runs size = aRunArray values size ifFalse: [^ aString asText].
> - 	aRunArray size = aString size ifFalse: [^ aString asText].
>   	
> + 	"Check runs and do the best you can to make them fit..."
> + 	aRunArray runs size = aRunArray values size ifFalse: [^ aString asText]. "raise error here?"
> + 	runsSize := aRunArray size.
> + 	stringSize := string size.
> + 	runs := stringSize = runsSize
> + 				ifTrue: [aRunArray]
> + 				ifFalse: [ stringSize > runsSize
> + 						ifTrue: [aRunArray  addLast: {} times: stringSize - runsSize]
> + 						ifFalse: [aRunArray copyFrom: 1 to: stringSize]].!
> - 	runs := aRunArray.!
> 
> 


More information about the Squeak-dev mailing list