File Coverage

blib/lib/App/Translit/String.pm
Criterion Covered Total %
statement 43 43 100.0
branch 8 8 100.0
condition 4 6 66.6
subroutine 8 8 100.0
pod 2 2 100.0
total 65 67 97.0


line stmt bran cond sub pod time code
1             package App::Translit::String;
2              
3 4     4   74969 use strict;
  4         25  
  4         114  
4 4     4   25 use warnings;
  4         6  
  4         97  
5              
6 4     4   2192 use English;
  4         15338  
  4         23  
7 4     4   3662 use Error::Pure qw(err);
  4         30384  
  4         79  
8 4     4   8292 use Getopt::Std;
  4         252  
  4         224  
9 4     4   1975 use Lingua::Translit;
  4         151616  
  4         1410  
10              
11             our $VERSION = 0.06;
12              
13             # Constructor.
14             sub new {
15 5     5 1 6034 my ($class, @params) = @_;
16              
17             # Create object.
18 5         16 my $self = bless {}, $class;
19              
20             # Object.
21 5         18 return $self;
22             }
23              
24             # Run script.
25             sub run {
26 4     4 1 9 my $self = shift;
27              
28             # Process arguments.
29 4         21 $self->{'_opts'} = {
30             'h' => 0,
31             'r' => 0,
32             't' => 'ISO/R 9',
33             };
34 4 100 66     22 if (! getopts('hrt:', $self->{'_opts'}) || @ARGV < 1
      66        
35             || $self->{'_opts'}->{'h'}) {
36              
37 1         79 print STDERR "Usage: $0 [-h] [-r] [-t table] [--version]\n\t".
38             "string\n\n";
39 1         14 print STDERR "\t-h\t\tPrint help.\n";
40 1         12 print STDERR "\t-r\t\tReverse transliteration.\n";
41 1         12 print STDERR "\t-t table\tTransliteration table (default ".
42             "value is 'ISO/R 9').\n";
43 1         10 print STDERR "\t--version\tPrint version.\n";
44 1         15 return 1;
45             }
46 3         159 $self->{'_string'} = $ARGV[0];
47              
48             # Run.
49 3         5 my $ret;
50 3         5 eval {
51 3         20 my $tr = Lingua::Translit->new($self->{'_opts'}->{'t'});
52 3 100       1487 if ($self->{'_opts'}->{'r'}) {
53 2 100       16 if ($tr->can_reverse) {
54             $ret = $tr->translit_reverse(
55 1         16 $self->{'_string'});
56             } else {
57 1         8 err 'No reverse transliteration.';
58             }
59             } else {
60 1         4 $ret = $tr->translit($self->{'_string'});
61             }
62             };
63 3 100       39394 if ($EVAL_ERROR) {
64 1         4 err 'Cannot transliterate string.',
65             'Error', $EVAL_ERROR;
66             }
67 2         88 print "$ret\n";
68 2         12 return 0;
69             }
70              
71             1;
72              
73             __END__