File Coverage

blib/lib/Text/Transliterator.pm
Criterion Covered Total %
statement 21 21 100.0
branch 5 8 62.5
condition 4 7 57.1
subroutine 3 3 100.0
pod 1 1 100.0
total 34 40 85.0


line stmt bran cond sub pod time code
1             package Text::Transliterator;
2 3     3   27618 use strict;
  3         7  
  3         79  
3 3     3   18 use warnings;
  3         6  
  3         522  
4            
5             our $VERSION = '1.03';
6            
7             sub new {
8 3     3 1 854 my $class = shift;
9 3         10 my ($from, $to);
10            
11             # first arguments : either a hashref, or a pair of strings
12 3 100 100     26 if ((ref $_[0] || '') eq 'HASH') {
13 2         6 my $map = shift;
14 2         164 $from = join "", keys %$map;
15 2         98 $to = join "", values %$map;
16             }
17             else {
18 1         2 $from = shift;
19 1         2 $to = shift;
20 1 50 33     5 defined $from and defined $to
21             or die 'Text::Transliterator->new($from, $to): invalid args';
22             }
23            
24             # remaining arguments
25 3   50     20 my $modifiers = shift || '';
26             not @_
27 3 50       14 or die 'Text::Transliterator->new(): too many args';
28            
29             # build the coderef
30 3         24 my $src = "sub {tr[$from][$to]$modifiers for \@_ }";
31 3         8 local $@;
32 3 50       530 my $coderef = eval $src or die $@;
33            
34 3         152 return $coderef;
35             }
36            
37            
38             1; # End of Text::Transliterator
39            
40             __END__