Header

Since the graph of objects serialized in a file can be large, and it can be useful to query some small extra info, Fuel supports the possibility to easily add such information in a header. The following examples show this set of features:
| serializer |
serializer := FLSerializer newDefault.

serializer header 
	at: #timestamp
	putAdditionalObject: TimeStamp now.

serializer header
	addPreMaterializationAction: [ 
		Transcript show: 'Before serializing'; cr ].

serializer header
	addPostMaterializationAction: [ :materialization | 
		Transcript 
			show: 'Serialized at ';
			show: (materialization additionalObjectAt: #timestamp); 
			cr;
			show: 'Materialized at ';
			show: TimeStamp now; 
			cr ].
	
serializer 
	serialize: 'a big amount of data' 
	toFileNamed: 'demo.fl'
Then, you can just materialize the header info:
| aHeader |
aHeader := FLMaterializer materializeHeaderFromFileNamed: 'demo.fl'.
aHeader additionalObjectAt: #timestamp.
Printing it, the result is:
'28 March 2013 12:44:54 pm'
If we normally materialize the whole file with:
FLMaterializer materializeFromFileNamed: 'demo.fl' 
Then, the print of the results is:
'a big amount of data'
And this is shown in Transcript:
Before serializing
Serialized at 28 March 2013 12:50:50 pm
Materialized at 28 March 2013 1:01:21 pm
For additional examples, you can see tests in FLHeaderSerializationTest.

Since the graph of objects serialized in a file can be large, and it can be useful to query some small extra info, Fuel supports the possibility to easily add such information in a header. The following examples show this set of features:

| serializer |
serializer := FLSerializer newDefault.

serializer header 
	at: #timestamp
	putAdditionalObject: TimeStamp now.

serializer header
	addPreMaterializationAction: [ 
		Transcript show: 'Before serializing'; cr ].

serializer header
	addPostMaterializationAction: [ :materialization | 
		Transcript 
			show: 'Serialized at ';
			show: (materialization additionalObjectAt: #timestamp); 
			cr;
			show: 'Materialized at ';
			show: TimeStamp now; 
			cr ].
	
serializer 
	serialize: 'a big amount of data' 
	toFileNamed: 'demo.fl'

Then, you can just materialize the header info:

| aHeader |
aHeader := FLMaterializer materializeHeaderFromFileNamed: 'demo.fl'.
aHeader additionalObjectAt: #timestamp.

Printing it, the result is:

'28 March 2013 12:44:54 pm'

If we normally materialize the whole file with:

FLMaterializer materializeFromFileNamed: 'demo.fl' 

Then, the print of the results is:

'a big amount of data'

And this is shown in Transcript:

Before serializing
Serialized at 28 March 2013 12:50:50 pm
Materialized at 28 March 2013 1:01:21 pm

For additional examples, you can see tests in FLHeaderSerializationTest.