A new version of Collections was added to project The Inbox:
http://source.squeak.org/inbox/Collections-ul.411.mcz ==================== Summary ==================== Name: Collections-ul.411 Author: ul Time: 23 November 2010, 1:56:22.424 pm UUID: 42a0b87a-f525-6345-bd2c-e55186e17c9d Ancestors: Collections-ul.410 - use #shouldBePrintedAsLiteral instead of #isLiteral when printing or storing characters and arrays =============== Diff against Collections-ul.410 =============== Item was changed: ----- Method: Array>>printOn: (in category 'printing') ----- printOn: aStream + self shouldBePrintedAsLiteral ifTrue: [^self printAsLiteralFormOn: aStream]. - self isLiteral ifTrue: [^self printAsLiteralFormOn: aStream]. self class = Array ifTrue: [^self printAsBraceFormOn: aStream]. ^super printOn: aStream! Item was added: + ----- Method: Array>>shouldBePrintedAsLiteral (in category 'testing') ----- + shouldBePrintedAsLiteral + + ^self class == Array and: [ self allSatisfy: [ :each | each shouldBePrintedAsLiteral ] ]! Item was changed: ----- Method: Array>>storeOn: (in category 'printing') ----- storeOn: aStream "Use the literal form if possible." + self shouldBePrintedAsLiteral - self isLiteral ifTrue: [aStream nextPut: $#; nextPut: $(. self do: [:element | element storeOn: aStream. aStream space]. aStream nextPut: $)] ifFalse: [super storeOn: aStream]! Item was changed: ----- Method: Array>>storeOnStream: (in category 'filter streaming') ----- storeOnStream:aStream + + self shouldBePrintedAsLiteral + ifTrue: [ super storeOnStream:aStream ] + ifFalse:[ aStream writeCollection:self ] - self isLiteral ifTrue: [super storeOnStream:aStream] ifFalse:[aStream writeCollection:self]. ! Item was changed: + ----- Method: Character>>isLiteral (in category 'testing') ----- - ----- Method: Character>>isLiteral (in category 'printing') ----- isLiteral ^true! Item was added: + ----- Method: Character>>shouldBePrintedAsLiteral (in category 'testing') ----- + shouldBePrintedAsLiteral + + ^value between: 33 and: 255! Item was changed: ----- Method: Character>>storeOn: (in category 'printing') ----- storeOn: aStream "Common character literals are preceded by '$', however special need to be encoded differently: for some this might be done by using one of the shortcut constructor methods for the rest we have to create them by ascii-value." | name | + self shouldBePrintedAsLiteral - (value between: 33 and: 255) ifTrue: [ aStream nextPut: $$; nextPut: self ] ifFalse: [ name := self class constantNameFor: self. name notNil ifTrue: [ aStream nextPutAll: self class name; space; nextPutAll: name ] ifFalse: [ aStream nextPut: $(; nextPutAll: self class name; nextPutAll: ' value: '; print: value; nextPut: $) ] ].! |
Free forum by Nabble | Edit this page |