Badger::Codec::Chain(3p)

NAME
Badger::Codec::Chain - encode/decode data using multiple codecs

SYNOPSIS
    use Badger::Codec::Chain;

    # compact form
    my $codec = Badger::Codec::Chain->new('storable+base64');

    # explicit form
    my $codec = Badger::Codec::Chain->new('storable', 'base64');

    # encode/decode data using codec chain
    my $enc   = $codec->encode({ pi => 3.14, e => 2.718 });
    my $dec   = $codec->decode($encoded);

DESCRIPTION
This module implements a subclass of Badger::Codec which chains together any number of other codec modules.

METHODS

  new(@codecs)
Constructor method to create a new codec chain. The codecs can be specified by name or as references to Badger::Codec objects.

    # by name
    my $codec = Badger::Codec::Chain->new('storable', 'base64');

    # by object reference
    my $codec = Badger::Codec::Chain->new(
        Badger::Codec->codec('storable'),
        Badger::Codec->codec('base64'),
    );

You can also use the compact form where multiple codec names are separated by "+".

    # compact form
    my $codec = Badger::Codec::Chain->new('storable+base64');

  encode($data)
Encodes the data referenced by the first argument using all the codecs in the chain.

    $encoded = $codec->encode($data);

  decode($html)
Decodes the encoded data passed as the first argument using all the codecs in the chain in reverse order.

    $decoded = $codec->decode($encoded);

  encoder()
Returns a reference to a subroutine which performs the encoding operation.

  decoder()
Returns a reference to a subroutine which performs the decoding operation.

INTERNAL METHODS

  coder(@coders)
Internal method to construct an encoder or decoder subroutine for a codec chain.

AUTHOR
Andy Wardley <http://wardley.org/>

COPYRIGHT
Copyright (C) 2005-2009 Andy Wardley. All rights reserved.

SEE ALSO
Badger::Codecs, Badger::Codec.