.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "TM::Serializable 3pm" .TH TM::Serializable 3pm "2019-09-07" "perl v5.28.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" TM::Serializable \- Topic Maps, abstract trait for stream (map) based input/output drivers .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 2 \& # 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 => \*(Aqfile:map.myformat\*(Aq); \& $tm\->sync_in; # uses MyFormat to parse the content from the file .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This trait implements synchronizable resources using a serialized format. Examples are formats such as AsTMa 1.0, 2.0, \s-1LTM, CTM, XTM.\s0 The only thing these drivers have to provide are the methods \&\f(CW\*(C`serialize\*(C'\fR and \f(CW\*(C`deserialize\*(C'\fR which serialize maps to streams and vice-versa. .PP This trait provides the implementations for \f(CW\*(C`source_in\*(C'\fR and \f(CW\*(C`source_out\*(C'\fR triggering \f(CW\*(C`deserialize\*(C'\fR and \f(CW\*(C`serialize\*(C'\fR, respectively. .SH "INTERFACE" .IX Header "INTERFACE" .SS "Methods" .IX Subsection "Methods" .IP "\fBsource_in\fR" 4 .IX Item "source_in" Uses the \s-1URL\s0 attached to the map object to trigger \f(CW\*(C`deserialize\*(C'\fR on the stream content behind the resource. All URLs of \s-1LWP\s0 are supported. If the \s-1URI\s0 is \f(CW\*(C`io:stdio\*(C'\fR then content from \s-1STDIN\s0 is consumed. This content can be consumed more than once (it is buffered internally), so that you can read several times from \f(CW\*(C`io:stdin\*(C'\fR getting the same input. .Sp If the resource \s-1URI\s0 is \f(CW\*(C`io:stdout\*(C'\fR, then nothing happens. .Sp If the resource \s-1URI\s0 is \f(CW\*(C`null:\*(C'\fR, then nothing happens. .Sp [Since \s-1TM 1.53\s0]: Any additional parameters are passed through to the underlying \f(CW\*(C`deserialize\*(C'\fR method. .IP "\fBsource_out\fR" 4 .IX Item "source_out" This method triggers \f(CW\*(C`serialize\*(C'\fR on the object. The contents will be copied to the resource identified by the \s-1URI\s0 attached to the object. At the moment, only \f(CW\*(C`file:\*(C'\fR URLs and \f(CW\*(C`io:stdout\*(C'\fR is supported. .Sp If the resource \s-1URI\s0 is \f(CW\*(C`io:stdin\*(C'\fR, nothing happens. .Sp If the resource \s-1URI\s0 is \f(CW\*(C`null:\*(C'\fR, nothing happens. .Sp If the resource \s-1URI\s0 is \f(CW\*(C`inline:..\*(C'\fR nothing happens. .Sp [Since \s-1TM 1.53\s0]: Any additional parameters are passed through to the underlying \f(CW\*(C`serialize\*(C'\fR method. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\s-1TM\s0, TM::Synchronizable .SH "AUTHOR INFORMATION" .IX Header "AUTHOR INFORMATION" Copyright 20(0[2\-6]|10), Robert Barta , All rights reserved. .PP 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