Hi,

Christophe Demarey had a nice idea (and he implemented it too!) that extends 
the syntax (or more precisely, the usage of the syntax) of STON a bit, and I 
just integrated it. Thank you, Christophe !

His core idea is to use the colon syntax for Associations. So now you can also 
write:

#foo:1

which will become

#foo->1

and vice versa.

This does not change the way maps (either for dictionaries or arbitrary 
objects) work. In practice, this means that there are now 2 closely related 
expressions:

STON fromString: '[ #foo:1, #bar:2 ]'.

 => { #foo->1. #bar->2 }

STON fromString: '{ #foo:1, #bar:2 }'.

 => a Dictionary(#bar->2 #foo->1 )

In the first case you get an Array of explicit Associations, in the second case 
you get a Dictionary which uses Associations internally, but that is an 
implementation detail. And of course you can send #asDictionary to the array.

Note that nesting is also possible ;-)

#foo : 1 : 2

means

#foo->(1->2)

Anyway, I think from a Smalltalk perspective this is totally cool. As far as I 
can see, this addition does not result in conflicts.

Another addition that was requested by Christophe that I added was a way to 
control which instance variables get written and/or the order in which they get 
written.

This can be done by overwriting Object class>>#stonAllInstVarNames

Sven


Reply via email to