File Coverage

blib/lib/Pod/L10N/Model.pm
Criterion Covered Total %
statement 58 67 86.5
branch 18 24 75.0
condition 4 6 66.6
subroutine 5 6 83.3
pod 0 2 0.0
total 85 105 80.9


line stmt bran cond sub pod time code
1             package Pod::L10N::Model;
2 2     2   1116 use 5.008001;
  2         11  
3 2     2   9 use strict;
  2         3  
  2         35  
4 2     2   8 use warnings;
  2         3  
  2         43  
5              
6 2     2   8 use Carp;
  2         13  
  2         1146  
7              
8             our $VERSION = "1.06";
9              
10             sub decode_file {
11 0     0 0 0 my $fn = shift;
12 0 0       0 open my $f1, '<', $fn or die "$!";
13 0         0 my @slurp = (<$f1>);
14 0         0 close $f1;
15 0         0 my $sl = join '', @slurp;
16 0         0 return decode($sl);
17             }
18              
19             sub decode {
20 3     3 0 2111 my $ss = $_[0];
21 3         8 $ss =~ s/\n{3,}/\n\n/g;
22 3         13 $ss =~ s/\n$//;
23 3         12 my @sp = split /\n\n/, $ss;
24              
25 3         4 my @enjp = ();
26 3         5 my $f = 0;
27 3         5 my $en;
28             my $jp;
29 3         5 my $c = 0;
30 3         3 my $com;
31              
32 3         7 for (@sp){
33 8         22 s/^\n*//;
34              
35 8 100       18 if($f == 10){
36 1 50       6 if(/^[(].+[)]$/){ #
37 1         3 push @enjp, [$com, $_];
38 1         2 $f = 0;
39 1         2 next;
40             } else {
41 0         0 push @enjp, [$com, undef];
42 0         0 $f = 0;
43             }
44             }
45              
46 7 100       13 if(/^=begin original/){
47 1         20 $f = 1;
48 1         3 $c = 0;
49 1         2 next;
50             }
51 6 100       15 if (/^=end original/){
52 2         3 $f = 2;
53 2 100       5 if($c == 0){
54 1         2 my $enjp = pop @enjp;
55 1 50       4 my ($en1, $jp1) = $enjp ? @{$enjp} : ('', '');
  0         0  
56 1         17 croak "end without begin\n$en1\n--\n$jp1\n";
57             }
58 1         1 next;
59             }
60 4 100 66     19 if ((/^=head/ || /^=item/) && !/=item \* \w/){
      66        
61 1         2 $f = 10;
62 1         2 $com = $_;
63 1         2 next;
64             }
65              
66 3 100       7 if($f == 1){
67 1         2 $en .= $_;
68 1         1 $c++;
69 1         2 next;
70             }
71              
72 2 100       4 if($f == 2){
73 1         2 $jp .= $_;
74 1         2 $c--;
75 1 50       3 if($c == 0){
76 1         4 push @enjp, [$en, $jp];
77 1         2 $en = '';
78 1         1 $jp = '';
79 1         1 $f = 0;
80             }
81 1         2 next;
82             }
83              
84 1 50       2 if($f == 0){
85 1         3 push @enjp, [$_, undef];
86             }
87             }
88              
89 2         6 return \@enjp;
90             }
91              
92             1;
93              
94             __END__