The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

CTK::Serializer - Base class for serialization perl structures

VERSION

Version 1.01

SYNOPSIS

    use CTK::Serializer;

    my $sr = CTK::Serializer->new( DEFAULT_FORMAT,
            attrs => {
                xml => [
                        { # For serialize
                            RootName   => "request",
                        },
                        { # For deserialize
                            ForceArray => 1,
                            ForceContent => 1,
                        }
                    ],
                json => [
                        { # For serialize
                            utf8 => 0,
                            pretty => 1,
                            allow_nonref => 1,
                            allow_blessed => 1,
                        },
                        { # For deserialize
                            utf8 => 0,
                            allow_nonref => 1,
                            allow_blessed => 1,
                        },
                    ],
            },
        );

    my $doc = $sr->serialize( xml => { foo => 1, bar => 2}, {
            RootName   => "request",
        });
    my $doc = $sr->document;

    my $perl = $sr->deserialize( xml => $doc, {
            ForceArray => 1,
            ForceContent => 1,
        });
    my $perl = $sr->struct;

    my $status = $sr->status; # 0 - Error, 1 - Ok

    my $error = $sr->error;

    my $MIME_type = $sr->content_type;

DESCRIPTION

This module provides access to serialization mechanism with support extending. Now allowed to use follows formats of serialization in this base class: XML, YAML, JSON and "none" for automatic format detecting

new

    my $sr = CTK::Serializer->new( $format );

If specified $format in constructor call then this format sets as default

    my $sr = CTK::Serializer->new( $format,
            attrs => {
                format => [
                    {...serialize attr...}, # for serialize
                    {...deserialize attr...},  # for deserialize
                ],
            },
        );

If an attribute is specified, the passed values are substituted for the call attributes of the corresponding serializer and deserializer

Supported formats:

XML

XML serialization via XML::Simple module

JSON

JSON serialization via JSON (JSON::XS if installed) module

YAML

YAML serialization via YAML::XS module

Also exists non-formal format "none". This format allows serialization in a perl-dump using the Data::Dumper; deserialization based on the format lookup mechanism based on the data signature.

For Example:

    my $sr = CTK::Serializer();
    my $perl = $sr->deserialize( $doc );

In this example, the format is detecting automatically

deserialize

    my $perl = $sr->deserialize( $format => $doc, $attrs );
    my $perl = $sr->deserialize( $doc );

The method returns deserialized structure of the document using specified format. The optional $attrs variable contents attributes of serialization module (hash-ref)

document, doc

    my $doc = $sr->serialize( $perl );
    my $doc = $sr->document;

This method returns document from last operation serialize or deserialize

error

    my $error = $sr->error;

Returns current error or NULL value ("") if no errors occurred

format

    my $format = $sr->format;
    my $format = $sr->format( $new_format );

Format accessor

content_type

    my $content_type = $sr->content_type;
    my $content_type = $sr->content_type( $format );

Returns MIME-type for format

get_list

    my @supported_serializers = $sr->get_list;

Returns list of supported serializers (their names)

lookup

    my $node = $sr->lookup( $format );

Looks for format attributes

register_serializer

This method uses for extension of this base class. See source code

serialize

    my $doc = $sr->serialize( $format => $perl, $attrs );
    my $doc = $sr->serialize( $perl );

The method returns serialized document of the structure using specified format. The optional $attrs variable contents attributes of serialization module (hash-ref)

stash

For internal use only. See source code

status

    my $status = $sr->status;

Returns 1 if no errors and 0 if errors occurred

Typical example of use:

    die( $sr->error ) unless $sr->status;

struct, structure

    my $perl = $sr->deserialize( $doc );
    my $perl = $sr->struct;

This method returns structure from last operation serialize or deserialize

HISTORY

1.00 Wed Dec 20 07:43:34 2017 GMT

Init version

See Changes file

DEPENDENCIES

IO::String, JSON, XML::Simple, YAML::XS

TO DO

See TODO file

BUGS

* none noted

SEE ALSO

CTK

AUTHOR

Serż Minus (Sergey Lepenkov) https://www.serzik.com <abalama@cpan.org>

COPYRIGHT

Copyright (C) 1998-2022 D&D Corporation. All Rights Reserved

LICENSE

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See LICENSE file and https://dev.perl.org/licenses