TM::Serializable
Topic Maps, abstract trait for stream (map) based input/output drivers
- Provided by: libtm-perl (Version: 1.56-7)
- Report a bug
Topic Maps, abstract trait for stream (map) based input/output drivers
# step 1) you write an input/output driver for a serialized TM format
package MyFormat;
# provides methods
sub deserialize {
my $self = shift; # gets current map
my $stream = shift;
# .... fill the map with content
}
sub serialize {
my $self = shift; # get the map
# ....
return ... #serialized content
}
1;
# step 2) construct a subclass of TM using this driver
package MapWithMyFormat;
use TM;
use base qw(TM);
use Class::Trait qw(TM::Serializable MyFormat);
1;
# step 3) use it in your application
my $tm = new MapWithMyFormat (url => 'file:map.myformat');
$tm->sync_in; # uses MyFormat to parse the content from the file
This trait implements synchronizable resources using a serialized format. Examples are formats such as AsTMa 1.0, 2.0, LTM, CTM, XTM. The only thing these drivers have to provide are the methods "serialize" and "deserialize" which serialize maps to streams and vice-versa.
This trait provides the implementations for "source_in" and "source_out" triggering "deserialize" and "serialize", respectively.
If the resource URI is "io:stdout", then nothing happens.
If the resource URI is "null:", then nothing happens.
[Since TM 1.53]: Any additional parameters are passed through to the underlying "deserialize" method.
If the resource URI is "io:stdin", nothing happens.
If the resource URI is "null:", nothing happens.
If the resource URI is "inline:.." nothing happens.
[Since TM 1.53]: Any additional parameters are passed through to the underlying "serialize" method.
TM, TM::Synchronizable
Copyright 20(0[2-6]|10), Robert Barta <drrho@cpan.org>, All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. http://www.perl.com/perl/misc/Artistic.html