Acme-Unicodify
view release on metacpan or search on metacpan
lib/Acme/Unicodify.pm view on Meta::CPAN
my %_TRANSLATE = (
a => "\N{U+251}",
b => "\N{U+432}",
c => "\N{U+63}\N{U+30A}",
d => "\N{U+64}\N{U+30A}",
e => "\N{U+3F5}",
f => "\N{U+4FB}",
g => "\N{U+260}",
h => "\N{U+4A3}",
i => "\N{U+268}",
j => "\N{U+135}",
k => "\N{U+1E31}",
l => "\N{U+2113}",
m => "\N{U+271}",
n => "\N{U+1E47}",
o => "\N{U+26AC}",
p => "\N{U+3C1}",
q => "\N{U+24E0}",
r => "\N{U+27E}",
s => "\N{U+15B}",
t => "\N{U+1C0}\N{U+335}",
u => "\N{U+1D66A}\N{U+30A}",
v => "\N{U+22C1}",
w => "\N{U+2375}",
x => "\N{U+1E8B}",
y => "\N{U+1EFE}",
z => "\N{U+1D66F}",
A => "\N{U+10300}",
B => "\N{U+1D6C3}",
C => "\N{U+C7}",
D => "\N{U+1D673}",
E => "\N{U+395}",
F => "\N{U+4FA}",
G => "\N{U+1E4}",
H => "\N{U+10199}",
I => "\N{U+10309}",
J => "\N{U+1D4AF}",
K => "\N{U+212A}",
L => "\N{U+1D473}",
M => "\N{U+1D4DC}",
N => "\N{U+2115}",
O => "\N{U+2B55}",
P => "\N{U+5C38}",
Q => "\N{U+1F160}",
R => "\N{U+5C3A}",
S => "\N{U+10296}",
T => "\N{U+4E05}",
U => "\N{U+2F10}",
V => "\N{U+1D54D}",
W => "\N{U+174}",
X => "\N{U+274C}",
Y => "\N{U+1F1FE}",
Z => "\N{U+2621}"
);
sub new {
my $class = shift;
my $self = {};
bless $self, $class;
$self->_define_cache();
return $self;
}
sub to_unicode {
my $self = shift;
my $str = shift;
if ( !defined($str) ) { return; }
my @parts = split /\b{gcb}/, $str;
my $out = '';
foreach my $l (@parts) {
if ( exists( $_TRANSLATE{$l} ) ) {
$out .= $_TRANSLATE{$l};
} else {
$out .= $l;
}
}
return NFD($out);
}
sub back_to_ascii {
my $self = shift;
my $str = shift;
if ( !defined($str) ) { return; }
my @parts = split /\b{gcb}/, $str;
my $out = '';
foreach my $l (@parts) {
if ( exists( $self->{_ASCII_CACHE}->{$l} ) ) {
$out .= $self->{_ASCII_CACHE}->{$l};
} else {
$out .= $l;
}
}
return $out;
}
sub file_to_unicode {
if ( $#_ != 2 ) { confess 'invalid call' }
my ( $self, $in_fn, $out_fn ) = @_;
my $txt = read_text($in_fn);
$txt = $self->to_unicode($txt);
write_text( $out_fn, $txt );
return;
}
sub file_back_to_ascii {
( run in 2.461 seconds using v1.01-cache-2.11-cpan-0d23b851a93 )