NAME
TM::Serializable - Topic Maps, abstract trait for stream (map) based input/output drivers
SYNOPSIS
# 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
DESCRIPTION
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.
INTERFACE
Methods
- source_in
-
Uses the URL attached to the map object to trigger
deserialize
on the stream content behind the resource. All URLs of LWP are supported. If the URI isio:stdio
then content from STDIN is consumed. This content can be consumed more than once (it is buffered internally), so that you can read several times fromio:stdin
getting the same input.If the resource URI is
io:stdout
, then nothing happens.If the resource URI is
null:
, then nothing happens. - source_out
-
This method triggers
serialize
on the object. The contents will be copied to the resource identified by the URI attached to the object. At the moment, onlyfile:
URLs andio:stdout
is supported.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.
SEE ALSO
AUTHOR INFORMATION
Copyright 200[2-6], 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