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

commits at source.squeak.org commits at source.squeak.org
Sat Feb 27 21:34:17 UTC 2010


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

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

Name: Collections-ar.323
Author: ar
Time: 27 February 2010, 10:32:57.735 pm
UUID: 66aa4c95-8687-8d49-a5cc-3eebe5ad7d2e
Ancestors: Collections-ar.322

Add SequenceableCollection>>splitBy:[do:] to implement common split operation, i.e.,

	'Hello<p>World' splitBy: '<p>' => #('Hello' 'World').
	'Hello<p>World' splitBy: '<p>' do:[:token| ... ].


=============== Diff against Collections-ar.322 ===============

Item was added:
+ ----- Method: SequenceableCollection>>splitBy:do: (in category 'enumerating') -----
+ splitBy: aCollection do: aBlock
+ 	"Split the receiver by aCollection. Evaluate aBlock with the parts.
+ 
+ 	This method works similarly to findTokens: but
+ 		a) takes a collection argument (i.e., 'hello<p>world<p>' splitBy: '<p>')
+ 		b) is 'strict' in its splitting, for example:
+ 				'a///b' findTokens: '/' ==> #('a' 'b')
+ 				'a///b' splitBy: '/' ==> #('a' '' '' 'b')
+ 	"
+ 
+ 	| lastIndex nextIndex |
+ 	lastIndex := 1.
+ 	[nextIndex := self indexOfSubCollection: aCollection startingAt: lastIndex.
+ 	nextIndex = 0] whileFalse:[
+ 		aBlock value: (self copyFrom: lastIndex to: nextIndex-1).
+ 		lastIndex := nextIndex+ aCollection size.
+ 	].
+ 	aBlock value: (self copyFrom: lastIndex to: self size).
+ !

Item was added:
+ ----- Method: SequenceableCollection>>splitBy: (in category 'enumerating') -----
+ splitBy: aCollection
+ 	"Answer the receiver, split by aCollection.
+ 
+ 	This method works similarly to findTokens: but
+ 		a) takes a collection argument (i.e., 'hello<p>world<p>' splitBy: '<p>')
+ 		b) is 'strict' in its splitting, for example:
+ 				'a///b' findTokens: '/' ==> #('a' 'b')
+ 				'a///b' splitBy: '/' ==> #('a' '' '' 'b')
+ 	"
+ 
+ 	^Array streamContents:[:stream|
+ 		self splitBy: aCollection do:[:each| stream nextPut: each].
+ 	].
+ !




More information about the Squeak-dev mailing list