[squeak-dev] The Trunk: Collections-ar.166.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Oct 14 02:35:35 UTC 2009


Andreas Raab uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-ar.166.mcz

==================== Summary ====================

Name: Collections-ar.166
Author: ar
Time: 13 October 2009, 7:35:06 am
UUID: 9abba6f5-43ec-b047-bd87-bf240bbac59d
Ancestors: Collections-ul.163, Collections-ul.164, Collections-ul.165

Merging Collections-ul.164, Collections-ul.165:

- removed Matrix >> #shallowCopy. The contents array is already copied in #postCopy, don't have to do it twice. This may break code which assumes that #shallowCopy copies the contents array which is a really bad assumption.
- also removed empty category "copying" from Interval
- faster and simpler String >> #format:, String >> #withBlanksTrimmed

=============== Diff against Collections-ul.163 ===============

Item was changed:
  ----- Method: String>>evaluateExpression:parameters: (in category 'private') -----
  evaluateExpression: aString parameters: aCollection 
  	"private - evaluate the expression aString with  
  	aCollection as the parameters and answer the  
  	evaluation result as an string"
  	| index |
+ 	index := Integer readFrom: aString readStream base: 10.
- 	index := ('0' , aString) asNumber.
  
  	index isZero
  		ifTrue: [^ '[invalid subscript: {1}]' format: {aString}].
  
  	index > aCollection size
  		ifTrue: [^ '[subscript is out of bounds: {1}]' format: {aString}].
  
  	^ (aCollection at: index) asString!

Item was changed:
  ----- Method: String>>format: (in category 'formatting') -----
  format: aCollection 
  	"format the receiver with aCollection  
  	 
  	simplest example:  
  	'foo {1} bar' format: {Date today}.
  	 
  	complete example:  
+ 	'\{ \} \\ foo {1} bar {2}' format: {12. 'string'}. 
- 	'\{ \} \\ foo {1} bar {2}' format: {12. 'string'}.  
  	"
+ 	^String new: self size streamContents: [ :result |
+ 		| stream currentChar |
+ 		stream := self readStream.
+ 		[ (currentChar := stream next) == nil ] whileFalse: [
- 	| result stream |
- 	result := String new writeStream.
- 	stream := self readStream.
- 
- 	[stream atEnd]
- 		whileFalse: [| currentChar | 
- 			currentChar := stream next.
  			currentChar == ${
+ 				ifTrue: [
+ 					result nextPutAll: (
+ 						self 
+ 							evaluateExpression: (stream upTo: $}) withBlanksTrimmed 	
+ 							parameters: aCollection) ]
- 				ifTrue: [| expression | 
- 					expression := self getEnclosedExpressionFrom: stream.
- 					result
- 						nextPutAll: (self evaluateExpression: expression parameters: aCollection)]
  				ifFalse: [
  					currentChar == $\
+ 						ifFalse: [ result nextPut: currentChar ]
+ 						ifTrue: [
+ 							(currentChar := stream next) ifNotNil: [
+ 								result nextPut: currentChar ] ] ] ] ]!
- 						ifTrue: [stream atEnd
- 								ifFalse: [result nextPut: stream next]]
- 						ifFalse: [result nextPut: currentChar]]].
- 
- 	^ result contents!

Item was changed:
  ----- Method: String>>withBlanksTrimmed (in category 'converting') -----
  withBlanksTrimmed
  	"Return a copy of the receiver from which leading and trailing blanks have been trimmed."
  
+ 	| first last |
+ 	first := self findFirst: [ :c | c isSeparator not ].
+ 	first = 0 ifTrue: [ ^'' ].  "no non-separator character"
+ 	last := self findLast: [ :c | c isSeparator not ].
+ 	(first = 1 and: [ last = self size ]) ifTrue: [ ^self copy ].
+ 	^self
- 	| first result |
- 	first := self findFirst: [:c | c isSeparator not].
- 	first = 0 ifTrue: [^ ''].  "no non-separator character"
- 	result :=  self
  		copyFrom: first
+ 		to: last
- 		to: (self findLast: [:c | c isSeparator not]).
- 	result isOctetString ifTrue: [^ result asOctetString] ifFalse: [^ result].
- 
- 	" ' abc  d   ' withBlanksTrimmed"
  !

Item was removed:
- ----- Method: Matrix>>shallowCopy (in category 'copying') -----
- shallowCopy
- 	^self class rows: nrows columns: ncols contents: contents shallowCopy!

Item was removed:
- ----- Method: String>>getEnclosedExpressionFrom: (in category 'private') -----
- getEnclosedExpressionFrom: aStream 
- 	"private - get the expression enclosed between '{' and 
- 	'}' and remove all the characters from the stream"
- 	| result currentChar |
- 	result := String new writeStream.
- 
- 	[aStream atEnd 
- 		or: [(currentChar := aStream next) == $}]]
- 		whileFalse: [result nextPut: currentChar].
- 
- 	^ result contents withBlanksTrimmed!




More information about the Squeak-dev mailing list