Acme-Albed

 view release on metacpan or  search on metacpan

lib/Acme/Albed.pm  view on Meta::CPAN

package Acme::Albed;

use utf8;
use Any::Moose;

our $VERSION = '0.03';

has albedian => (
    is      => 'rw',
    isa     => 'Int',
    default => 0,
);

has dict => (
    is      => 'rw',
    isa     => 'HashRef',
    lazy    => 1,
    default => sub {
        my $dict = {
            a   => { before => 'あいうえお', after => 'ワミフネト', },
            ka  => { before => 'かきくけこ', after => 'アチルテヨ', },
            sa  => { before => 'さしすせそ', after => 'ラキヌヘホ', },
            ta  => { before => 'たちつてと', after => 'サヒユセソ', },
            na  => { before => 'なにぬねの', after => 'ハシスメオ', },
            ha  => { before => 'はひふへほ', after => 'マリクケロ', },
            ma  => { before => 'まみむめも', after => 'ヤイツレコ', },
            ya  => { before => 'やゆよ',       after => 'タモヲ', },
            ra  => { before => 'らりるれろ', after => 'ナニウエノ', },
            wa  => { before => 'わをん',       after => 'カムン', },
            ga  => { before => 'がぎぐげご', after => 'ダヂヅデゾ', },
            za  => { before => 'ざじずぜぞ', after => 'バビブゲボ', },
            da  => { before => 'だぢづでど', after => 'ガギグベゴ', },
            ba  => { before => 'ばびぶべぼ', after => 'ザジズゼド', },
            pa  => { before => 'ぱぴぷぺぽ', after => 'プポピパペ', },
            la  => { before => 'ぁぃぅぇぉ', after => 'ァィゥェォ', },
            ltu => { before => 'っゃゅょ',    after => 'ッャュョ', },
            en  => {
                before => 'abcdefghijklmnopqrstuvwxyz',
                after  => 'ypltavkrezgmshubxncdijfqow',
            },
        };
        return $dict;
    },
);

sub to_albed {
    my ( $self, $arg ) = @_;
    return unless defined $arg;
    $self->albedian(0);
    $self->_conv($arg);
}

sub from_albed {
    my ( $self, $arg ) = @_;
    return unless defined $arg;
    $self->albedian(1);
    $self->_conv($arg);
}

sub _conv {
    my ( $self, $message ) = @_;
    my $res;
    my $dict    = $self->dict;
    my @mos     = keys(%$dict);
    my @message = split //, $message;
    for my $i ( 0 .. $#message ) {
        my $char = $message[$i];
        if ( $char =~ /(\s|\t|\n)/ ) {
            $res .= $char;
        }
        else {
            return unless ( defined $char && $char ne "" );
            my $enc;
            foreach my $key (@mos) {
                $" = "|";
                my ( $source, $conv ) = $self->_resource( $dict->{$key} );
                my @source = split //, $source;
                my @conv   = split //, $conv;



( run in 0.691 second using v1.01-cache-2.11-cpan-39bf76dae61 )