Acme-Text-Viceversa
view release on metacpan or search on metacpan
lib/Acme/Text/Viceversa.pm view on Meta::CPAN
q|d| => 'p',
q|e| => 'Ç',
q|f| => 'É',
q|g| => 'É',
q|h| => 'É¥',
q|i| => 'á´',
q|j| => 'ſ̣',
q|k| => 'Ê',
q|l| => 'ê',
q|m| => 'ɯ',
q|n| => 'u',
q|o| => 'o', # same!
q|p| => 'd',
q|q| => 'b',
q|r| => 'ɹ',
q|s| => 's', # same!
q|t| => 'Ê',
q|u| => 'n',
q|v| => 'Ê',
q|w| => 'Ê',
q|x| => 'x', # same!
q|y| => 'Ê',
q|z| => 'z', # same!
q|{| => '}',
q{|} => '|', # same!
q|}| => '{',
q|~| => 'â¼', # same!
);
my %rot180 = %ascii;
my $list = '';
while( my( $from, $to ) = each %ascii ){ # to make reversed list
next if $to =~ /^[ -~]$/; # skip if it was an ascii
$rot180{$to} = $from; # add reversed key
$list .= $to; # add the charactors to the list
}
$list = "\Q" . $list;
sub ÉsɹÇÊÇÉá´Ê {
my $self = shift;
my $str = shift;
$str =~ s/\r\n/\n/g;
my @results = ();
foreach ( split "\n", $str ) {
my @result = reverse map{ $self->ÇÊÉÊoɹ($_) } split /\s/, $_;
unshift @results, join " ", @result;
}
return join "\n", @results;
}
sub ÇÊÉÊoɹ {
my $self = shift;
my $str = shift;
croak $self->ÇÊÉÊoɹ( __PACKAGE__ . " accepts only ascii and their upset." )
unless $str =~ /^(:?[ -~$list]+)$/o;
my @results = ();
my $string = '';
my $buffer = '';
while ( $string = substr( $str, 0, 1, '' ) or $string eq '0' ){
# some charactors have length 2 even if they were under utf8
if( exists $rot180{$string} ) {
unshift @results, $rot180{$string};
$buffer = '';
}else{
$buffer .= $string;
next unless exists $rot180{$buffer};
unshift @results, $rot180{$buffer};
$buffer = '';
}
}
return join "", @results;
}
1;
__END__
=encoding utf-8
=head1 ATENTION
You have to twist your neck to read this document.
Don't turn your display, it is the sliest way for me.
=head1 NAME
ÊxÇÊ ÇÉ¥Ê ÊÇsdn Êsná - ÉsɹÇÊÇÉá´Î::ÊxÇâ¥::ÇɯÉâ
=head1 SYNOPSIS
text that you want to make upset #
â
Ì(͵ÊÇsdn ÇÊÉɯ oÊ ÊuÉÊ noÊ ÊÉÉ¥Ê ÊxÇÊ͵)viceversa<-Ê$ = ÊÇsdn$ Êɯ
â
Ì()ÊÇu<-ÉsɹÇÊÇÉá´Î::ÊxÇâ¥::ÇɯÉâ = Ê$ Êɯ
â
ÌÉsɹÇÊÇÉá´Î::ÊxÇâ¥::ÇɯÉâ Çsn
=head1 DESCRIPTION
=head2 ɹoÊÉnɹÊsuoÉ
=head3 ()ÊÇu
ËpÇɹá´nbÇɹ sá´ Éuá´É¥Êou ËɹoÊÉnɹÊsuoÉ É Êsnſ̣
=head2 spoÉ¥ÊÇɯ
=head3 (É¥dÉɹÉÉɹÉd$)viceversa
sÇpá´Êoɹd Çênpoɯ sá´É¥Ê ÊÉÉ¥Ê uoá´ÊÉunÉ Êêuo ÇÉ¥Ê sá´ sá´É¥Ê Ëá´á´ÉsÉ uᴠɥdÉɹÉÉɹÉd ÊuÉ ÊÇsdn ÊêÊÉÇɹɹoÉ
=head1 AUTHOR
E<lt>ɯoÉËêá´ÉɯÉ@Çuá´É¯É¥ÊɹoÊE<gt> (Çuá´É¯É¥ÊɹoÊ)Épá´É¥soâ
á´Ênâ
=head1 LICENSE
ËÉêÇsÊá´ êɹÇÔ sÉ sɯɹÇÊ ÇɯÉs ÇÉ¥Ê É¹Çpun Êá´ ÊÉá´poɯ ɹo/puÉ Êá´ ÇÊnqá´É¹Êsá´pÇɹ uÉÉ noÊ E<039>ÇɹÉÊÊÉos ÇÇÉ¹É sá´ ÊɹÉɹqá´ê sá´É¥â¥
ËÉpá´É¥soâ
á´Ênâ
(â) ÊÉ¥Éá´É¹Êdoâ
( run in 1.001 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )