would be nice to collect all these tips and tricks for STON. On Fri, May 19, 2017 at 10:39 AM, Offray Vladimir Luna Cárdenas < offray.l...@mutabit.com> wrote:
> Hi, > > Thanks for this interesting conversation. I had some similar problem with > Grafoscopio notebooks being to big when I run the default serializer > because it puts data about the Text object and some other info about runs. > What I did was to flat the tree to contain only the info I need. I solved > this with two methods (listed below). Maybe this can be helpful: > > GrafoscopioNotebook>>exportAsSton: aNotebook on: aFileStream > | stonPrettyString | > aNotebook flatten. > stonPrettyString := String streamContents: [ :stream | > (STON writer on: stream) > newLine: String crlf; > prettyPrint: true; > keepNewLines: true; > nextPut: aNotebook children]. > aFileStream nextPutAll: stonPrettyString > > > GrafoscopioNode>>flatten > "I traverse the tree looking for node bodies containing 'Text' objects > and transform them to > their string content, so space is saved and storage format is DVCS > friendly while serializing > them to STON" > > (self preorderTraversal) do: [ :eachNode | > (eachNode body class = Text) > ifTrue: [eachNode body: (eachNode body asString)]] > > > Cheers, > > Offray > > > On 17/05/17 09:15, Cyril Ferlicot D. wrote: > >> On 17/05/2017 16:02, Sven Van Caekenberghe wrote: >> >>> OK, that is an understandable example. >>> >>> But why exactly do you want Currency to be serialised differently ? You >>> don't want too many instances ? You want all instances to be #== ? Is >>> Currency too big ? You want to allow humans to edit the STON file ? What ? >>> Why ? >>> >>> You can easily make it Currency['Euro'] or even Currency[#Euro] like it >>> is already done for a number of built-in classes. >>> >>> The last example that I gave solved the 'too many instances', make them >>> #== issue. >>> >>> If it is size, that got covered too, but you must solve the problem of >>> how the receiving end will resolve the reference then. >>> >>> But since that is all no good, there must still be another requirement. >>> >> Here it is a simple example to show what I want. >> >> The real use case is that in Moose, entities are really connected to >> their model, and if one of our classes contains an entity it would >> produce a really really really big ston file since it would export >> millions of entities. >> >> But there is a way to retrieve an entity of this model from its moose >> name. >> >> Thus, I would like to export only the moose name of the entities, then >> get the corresponding entity from a Model the user would have load >> before during the ston reading. >> >> >>> >> > >