Provided by: libtm-perl_1.56-8_all bug

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 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.

           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.

       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, only "file:"
           URLs  and "io: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.

           [Since TM 1.53]: Any additional parameters are passed through to the underlying
           "serialize" method.

SEE ALSO

       TM, TM::Synchronizable

AUTHOR INFORMATION

       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