[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
|