The Inbox: Collections-ul.411.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Inbox: Collections-ul.411.mcz

commits-2
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: $) ] ].!