Badger
view release on metacpan or search on metacpan
lib/Badger/Codec.pm view on Meta::CPAN
#========================================================================
#
# Badger::Codec
#
# DESCRIPTION
# Base class codec providing a generic API for encoding/decoding data.
#
# AUTHOR
# Andy Wardley <abw@wardley.org>
#
#========================================================================
package Badger::Codec;
use Badger::Class
version => 0.01,
debug => 0,
base => 'Badger::Base',
utils => 'UTILS';
sub encode {
shift->not_implemented;
}
sub decode {
shift->not_implemented;
}
# This is the "brute force and ignorance" approach to creating stand-alone
# subroutines. They get the job done, albeit at the overhead of an extra
# method call. Subclasses can do something better, like exporting existing
# subrefs directly.
sub encoder {
my $self = shift;
return sub { $self->encode(@_) };
}
sub decoder {
my $self = shift;
return sub { $self->decode(@_) };
}
1;
__END__
=head1 NAME
Badger::Codec - base class for encoding/decoding data
=head1 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);
=head1 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
L<Badger::Codecs>.
=head1 DESCRIPTION
( run in 0.469 second using v1.01-cache-2.11-cpan-98e64b0badf )