About STON

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

About STON

stepharo
sven

I was wondering if we could get the following in STON


STON acceptNonPresentClasses.

STON readFrom: 'Blblbl {#foo : 3}

would create a dictionary with class name -> #Blblbl

Now if the class is loaded we would get a Blblbl object


Christophe has some other ideas such

STON nilOutEmptyCollections.
to avoid to save #() and other

Stef

Reply | Threaded
Open this post in threaded view
|

Re: About STON

Sven Van Caekenberghe-2
Stef,

On 12 Aug 2014, at 07:55, stepharo <[hidden email]> wrote:

> sven
>
> I was wondering if we could get the following in STON
>
>
> STON acceptNonPresentClasses.
>
> STON readFrom: 'Blblbl {#foo : 3}
>
> would create a dictionary with class name -> #Blblbl
>
> Now if the class is loaded we would get a Blblbl object

Good idea:

===
Name: STON-Core-SvenVanCaekenberghe.51
Author: SvenVanCaekenberghe
Time: 12 August 2014, 3:40:21.574545 pm
UUID: 6559f648-b74a-4901-b249-e72808fdea0d
Ancestors: STON-Core-SvenVanCaekenberghe.49

Add STONReader>#acceptUnknownClasses: option

When true (default is false) an unknown object class will result in a map with an added property #className (thx Stéphane Ducasse for the suggetion)

Added STON class>>#classNameKey
Moved #stonName from Class to Object class

Added STONReaderTests>>#testUnknownClasses
===
Name: STON-Tests-SvenVanCaekenberghe.46
Author: SvenVanCaekenberghe
Time: 12 August 2014, 3:40:43.256364 pm
UUID: e48a3d7c-6d8a-4899-943f-829ee4e8715d
Ancestors: STON-Tests-SvenVanCaekenberghe.44

Add STONReader>#acceptUnknownClasses: option

When true (default is false) an unknown object class will result in a map with an added property #className (thx Stéphane Ducasse for the suggetion)

Added STON class>>#classNameKey
Moved #stonName from Class to Object class

Added STONReaderTests>>#testUnknownClasses
===

> Christophe has some other ideas such
>
> STON nilOutEmptyCollections.
> to avoid to save #() and other

I think this can better be done with a custom serialisation, assuming #roles is a lazy initialised collection, like:

#stonOn: stonWriter
  stonWriter writeObject: self streamMap: [ :stream |
    stream
      at: #username put: username;
      at: #password put: password.
    (roles isNil or: [ roles isEmpty ])
        ifFalse: [ stream at: #roles put: roles ] ]

BTW, not writing nil is already an option, see #stonShouldWriteNilInstVars

> Stef

Thanks for the feedback,

Sven