TM::Serializable - 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.
serialize
deserialize
This trait provides the implementations for source_in and source_out triggering deserialize and serialize, respectively.
source_in
source_out
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 is io: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 from io:stdin getting the same input.
io:stdio
io:stdin
If the resource URI is io:stdout, then nothing happens.
io:stdout
If the resource URI is null:, then nothing happens.
null:
[Since TM 1.53]: Any additional parameters are passed through to the underlying deserialize method.
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, only file: URLs and io:stdout is supported.
file:
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.
inline:..
[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
To install TM, copy and paste the appropriate command in to your terminal.
cpanm
cpanm TM
CPAN shell
perl -MCPAN -e shell install TM
For more information on module installation, please visit the detailed CPAN module installation guide.