Acme-Lelek
view release on metacpan or search on metacpan
lib/Acme/Lelek.pm view on Meta::CPAN
}
# ABSTRACT: encode/decode text to lelek code.
use autobox::Core;
use Convert::BaseN;
use Const::Fast;
use Moo;
const my $lek_re => qr/^lek$/i;
const my @leks => qw(lek leK lEk Lek lEK LeK LEk LEK);
const my %octals => map { $leks[$_] => $_ } 0 .. 7;
has base8 => (
is => 'ro',
required => 1,
default => sub {
Convert::BaseN->new( base => 8 );
}
);
sub encode {
my ( $self, $msg ) = @_;
$self->base8->encode($msg)->split('')->grep(qr/[0-7]/)
->map( sub { $leks[$_] } )->unshift('AH Le')->join(' ');
}
sub decode {
my ( $self, $msg ) = @_;
$self->base8->decode(
$msg->split(qr/\s+/)->grep($lek_re)->map(
sub {
$octals{$_};
}
)->join('')
);
}
1;
__END__
( run in 0.884 second using v1.01-cache-2.11-cpan-49f99fa48dc )