On ven. 12 oct. 2018 at 11:38, Sven Van Caekenberghe <[email protected]> wrote:

> Hi,
>
> I have consolidated all repositories where STON code lives so that they
> are now all in sync, and in sync with changes from Pharo 7.
>
>  http://ss3.gemtalksystems.com/ss/STON/
>  http://smalltalkhub.com/mc/SvenVanCaekenberghe/STON/main/
>  https://github.com/svenvc/ston
>
> There are 2 CI builds
>
>  https://travis-ci.org/svenvc/ston
>  https://ci.inria.fr/pharo-contribution/job/STON/
>
> The project's format will remain FileTree (until Tonel is supported on
> other Smalltalk implementations).
>
>
> Last week I applied a couple of changes that I wanted to apply for a long
> time.
>
> Traits are no longer used in the implementation (which should help porting
> to other Smalltalk implementations).
>
> More specifically the following are used (again)
>
> - Class>>#stonOn:
> - ClassDescription>>#stonContainsSubObjects
> - Metaclass>>#stonName
> - Metaclass>>#stonOn:
>
> instead of
>
> - TClass>>#stonOn:
> - TClassDescription>>#stonContainsSubObjects
> - TApplyingOnClassSide>>#stonName
> - TApplyingOnClassSide>>#stonOn:
>
> use #instanceSide instead of #theNonMetaClass in MetaClass>>#stonOn:
>
> Reorganised the packages with sub tags.
>
> Add support for Fraction and ScaledDecimal literals (not in JSON mode).
> Previously a float conversion meant there was a loss of information.
>
> Change the representation of Date to include a timezone offset (since the
> current Date implementation is sensitive to this).
>
>  2018-10-11Z
>  2018-10-11+00:00
>  2018-10-11+02:00
>
> A missing timezone offset is interpreted as being the local timezone
> offset.
>
> Add more special representations for common value style objects. One of
> STON's goals is to be a human readable and human editable representation of
> an object graph while remaining 100% correct (not losing information). The
> following were added for this reason:
>
> MimeType and URL using ZnMimeType and ZnUrl respectively as simplified
> values.
>
>  MimeType['application/json']
>  URL['https://pharo.org']
>
> Color
>
>  Color[#red]
>  Color{#red:1.0,#green:0.0,#blue:0.0,#alpha:0.4}
>
> FileReferences to the DiskFileSystem (effectively normal files)
>
>  FILE['/tmp/foo.txt']
>
> Here is an example of how much difference that makes. Given the following
> Dictionary
>
> {
>   #background->Color red.
>   #workdir->'/tmp/pharo/work/' asFileReference.
>   #home->'https://pharo.org/experimental' asUrl.
>   #datatype->'application/json' asMIMEType } asDictionary
>
> Which contains real objects as its values.
>
> was serialised by STON BEFORE the changes as
>
> {
>         #datatype : ZnMimeType {
>                 #main : 'application',
>                 #sub : 'json'
>         },
>         #background : Color {
>                 #rgb : 1072693248,
>                 #cachedDepth : 32,
>                 #cachedBitPattern : Bitmap [
>                         4294901760
>                 ],
>                 #alpha : 255
>         },
>         #home : ZnUrl {
>                 #scheme : #https,
>                 #host : 'pharo.org',
>                 #segments : OrderedCollection [
>                         'experimental'
>                 ]
>         },
>         #workdir : FileReference {
>                 #filesystem : FileSystem {
>                         #store : MacStore {
>                                 #maxFileNameLength : 255
>                         }
>                 },
>                 #path : AbsolutePath [ 'tmp', 'pharo', 'work' ]
>         }
> }
>
> which is 100% correct, but not very human friendly.
>
> Now, AFTER the changes, the STON serialisation looks as follows:
>
> {
>         #datatype : MimeType [ 'application/json' ],
>         #background : Color [ #red ],
>         #home : URL [ 'https://pharo.org/experimental' ],
>         #workdir : FILE [ '/tmp/pharo/work' ]
> }
>
> which is a huge improvement, IMO.
>
> What do you think ? Comments, feedback, remarks ?
> Any other suggestions for other object that could use this treatment ?
>

This is great thank you! In some projects I had some hacks for the export
of FileReferences in a readable way, it is great to know have a readable
export by default in ston.


> Sven
>
>
> --
Cyril Ferlicot
https://ferlicot.fr

Reply via email to