logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

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

Author

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

Description

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

Internal Methods

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

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

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

Name

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

See Also

       Badger::Codecs, Badger::Codec.

perl v5.36.0                                       2023-08-28                          Badger::Codec::Chain(3pm)

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);

See Also