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 - base class for encoding/decoding data

Author

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

Description

       This module implements a base class codec module for encoding and decoding data to and from different
       formats. It must be subclassed to provide useful implementations of the "encode()" and "decode()"
       methods.

       In most, if not all cases, subclasses will simply delegate to subroutines provided by other modules.  For
       example, the Badger::Codec::Storable module delegates to the "freeze()" and "thaw()" methods provided by
       the Storable module.

Introduction

       This documentation describes the inner working of codec modules. You should only need to consult this
       documentation if you're writing a codec subclass.  For a general introduction to codecs and examples of
       use, please see Badger::Codecs.

Methods

encode($data)
       Method for encoding data.  This must be redefined in subclassed modules.

   decode($data)
       Method for decoding data.  This must be redefined in subclassed modules.

   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 - base class for encoding/decoding data

Synopsis

           # creating a Badger::Codec subclass
           package My::Codec;
           use base 'Badger::Codec';

           sub encode {
               my ($self, $data) = @_;
               # do something
               return $encoded_data;
           }

           sub decode {
               my ($self, $encoded_data) = @_;
               # do something
               return $decoded_data;
           }

           # using the subclass:
           use My::Codec;

           my $codec   = My::Codec->new();
           my $encoded = $codec->encode($some_data);
           my $decoded = $codec->decode($encoded);

See Also