Le 16/06/2018 �� 10:43, Ben Coman a ��crit��:
How can a fileout/filein be done using Tonel format?
In the first case as a script?
and secondly as a possible menu option for Pharo?

This is to facilitate transfer of student coding exercises for Exercism.
http://exercism.io/languages/pharo/launch

Could Tonel handle a full package export in one file?

On 16 June 2018 at 17:13, Hilaire <hilaire@drgeo.eu> wrote:
Hi Ben,

I am not sure, but the purpose of Tonel is to propose a file representation of "one class=one file".

Sure thats how Tonel came about, and its how we mostly use it, but is this an inherent limitation?��
Each method is prefixed with its class, so from my 100ft viewpoint it seems feasible to transport a whole package in one Tonel file.��


Why not using Fileout st files to transfer the code?

The same question might be asked why Iceberg didn't just use a Fileout at class level.��
The Tonel��format is more readable, especially minus the scattering of exclamation marks.
��
I also meant to ask, what methods are used to file-in a Tonel file ?
Or more the point, what method process a string in Tonel format that has been downloaded from a website?

Actually, hunting around a bit I found....

TonelParserTest >> testMethodDefList
shows that... ((TonelParser on: tonelString readStream) perform:��#methodDefList)
returns an array of MCMethodDefinitions that respond to #load
with...
MCMethodDefinition >>��load
self actualClass
compile: source
classified: category
withStamp: timeStamp
notifying: nil

And...��
TonelParserTest >>��testTypeDef
shows that ((TonelParser on: tonelString��readStream) perform: #typeDef)
returns a��MCClassDefinition that also responds to #load
with...
MCClassDefinition >> load
self createClass


So as an experiment I deleted MCMockClassD,
then in playground evaluated...
�� �� tonelString := (ZnEasy get: 'https://raw.githubusercontent.com/pharo-project/pharo/development/src/MonticelloMocks/MCMockClassD.class.st') contents.
�� �� parser := (TonelParser on: tonelString readStream).
�� �� classDef := parser perform: #typeDef.
�� �� methodDefs := parser perform: #methodDefList.
�� �� classDef load.
�� �� methodDefs do: [ :md | md load ].

and super cool...�� ��MCMockClassD>>one�� was restored.
So is that the correct way to use it?

cheers -ben