File Coverage

lib/App/Lingua/BO/Wylie/Transliteration.pm
Criterion Covered Total %
statement 67 171 39.1
branch 0 16 0.0
condition 0 30 0.0
subroutine 35 54 64.8
pod 0 1 0.0
total 102 272 37.5


line stmt bran cond sub pod time code
1             package App::Lingua::BO::Wylie::Transliteration;
2             BEGIN {
3 1     1   155255 $App::Lingua::BO::Wylie::Transliteration::AUTHORITY = 'cpan:DBR';
4             }
5             {
6             $App::Lingua::BO::Wylie::Transliteration::VERSION = '0.1.0';
7             }
8              
9 1     1   9512 use Moo;
  1         77276  
  1         8  
10 1     1   10654 use true;
  1         44213  
  1         8  
11 1     1   11034 use utf8;
  1         18  
  1         9  
12 1     1   27898 use utf8::all;
  1         160670  
  1         9  
13 1     1   3881 use 5.010;
  1         4  
  1         37  
14 1     1   6 use strict;
  1         2  
  1         29  
15 1     1   4 use warnings;
  1         2  
  1         33  
16 1     1   1533 use methods-invoker;
  1     1   86718  
  1         8  
  1         8729  
  1         42082  
  1         10  
17 1     1   2315 use MooX::Options skip_options => [qw];
  1         3051  
  1         12  
18 1     1   756814 use MooX::Types::MooseLike::Base qw(:all);
  1         19644  
  1         922  
19              
20 1     1   7520 no autovivification;
  1         1873  
  1         11  
21              
22             has [qw< SUPERSCRIPT SUBSCRIPT PRESCRIPT SCRIPT SCRIPT_SUBJ POSTSCRIPT1 POSTSCRIPT2 VOWEL > ] => (
23             is => 'lazy',
24             isa => HashRef,
25             );
26              
27             has [qw< SUPERSCRIPT_RX SUBSCRIPT_RX PRESCRIPT_RX SCRIPT_RX SCRIPT_SUBJ_RX POSTSCRIPT1_RX POSTSCRIPT2_RX VOWEL_RX > ] => (
28             is => 'lazy',
29             isa => RegexpRef,
30             );
31              
32             has scheme => (
33             is => 'lazy',
34             isa => RegexpRef,
35             );
36              
37 1     1   1680 method _build_PRESCRIPT {+{
  0     0      
  0            
38 0           G => "\N{TIBETAN LETTER GA}",
39             D => "\N{TIBETAN LETTER DA}",
40             P => "\N{TIBETAN LETTER PA}",
41             M => "\N{TIBETAN LETTER MA}",
42             B => "\N{TIBETAN LETTER BA}",
43             "'" => "\N{TIBETAN LETTER -A}", # special (for later)
44             }};
45              
46 1     1   30303 method _build_SUPERSCRIPT {+{
  0     0      
  0            
47 0           R => "\N{TIBETAN LETTER RA}",
48             S => "\N{TIBETAN LETTER SA}",
49             L => "\N{TIBETAN LETTER LA}",
50             }};
51              
52 1     1   21583 method _build_SUBSCRIPT { +{
  0     0      
  0            
53 0           R => "\N{TIBETAN SUBJOINED LETTER RA}",
54             L => "\N{TIBETAN SUBJOINED LETTER LA}",
55             Y => "\N{TIBETAN SUBJOINED LETTER YA}",
56             V => "\N{TIBETAN SUBJOINED LETTER WA}", # can be w aswell
57             }};
58              
59 1     1   1988 method _build_SCRIPT {+{
  0     0      
  0            
60 0           K => "\N{TIBETAN LETTER KA}",
61             KH => "\N{TIBETAN LETTER KHA}",
62             G => "\N{TIBETAN LETTER GA}",
63             GH => "\N{TIBETAN LETTER GHA}",
64             NG => "\N{TIBETAN LETTER NGA}",
65             C => "\N{TIBETAN LETTER CA}",
66             CH => "\N{TIBETAN LETTER CHA}",
67             J => "\N{TIBETAN LETTER JA}",
68             NY => "\N{TIBETAN LETTER NYA}",
69             TT => "\N{TIBETAN LETTER TTA}",
70             TTHA => "\N{TIBETAN LETTER TTHA}",
71             DD => "\N{TIBETAN LETTER DDA}",
72             DDHA => "\N{TIBETAN LETTER DDHA}",
73             NN => "\N{TIBETAN LETTER NNA}",
74             T => "\N{TIBETAN LETTER TA}",
75             TH => "\N{TIBETAN LETTER THA}",
76             D => "\N{TIBETAN LETTER DA}",
77             DH => "\N{TIBETAN LETTER DHA}",
78             N => "\N{TIBETAN LETTER NA}",
79             P => "\N{TIBETAN LETTER PA}",
80             PH => "\N{TIBETAN LETTER PHA}",
81             B => "\N{TIBETAN LETTER BA}",
82             BH => "\N{TIBETAN LETTER BHA}",
83             M => "\N{TIBETAN LETTER MA}",
84             TS => "\N{TIBETAN LETTER TSA}",
85             TSHA => "\N{TIBETAN LETTER TSHA}",
86             DZ => "\N{TIBETAN LETTER DZA}",
87             DZHA => "\N{TIBETAN LETTER DZHA}",
88             W => "\N{TIBETAN LETTER WA}",
89             ZH => "\N{TIBETAN LETTER ZHA}",
90             Z => "\N{TIBETAN LETTER ZA}",
91             '' => "\N{TIBETAN LETTER -A}",
92             Y => "\N{TIBETAN LETTER YA}",
93             R => "\N{TIBETAN LETTER RA}",
94             L => "\N{TIBETAN LETTER LA}",
95             SH => "\N{TIBETAN LETTER SHA}",
96             SS => "\N{TIBETAN LETTER SSA}",
97             S => "\N{TIBETAN LETTER SA}",
98             H => "\N{TIBETAN LETTER HA}",
99              
100             KSSA => "\N{TIBETAN LETTER KSSA}",
101             }};
102              
103 1     1   20893 method _build_SCRIPT_SUBJ {+{
  0     0      
  0            
104 0           K => "\N{TIBETAN SUBJOINED LETTER KA}",
105             KH => "\N{TIBETAN SUBJOINED LETTER KHA}",
106             G => "\N{TIBETAN SUBJOINED LETTER GA}",
107             GH => "\N{TIBETAN SUBJOINED LETTER GHA}",
108             NG => "\N{TIBETAN SUBJOINED LETTER NGA}",
109             C => "\N{TIBETAN SUBJOINED LETTER CA}",
110             CH => "\N{TIBETAN SUBJOINED LETTER CHA}",
111             J => "\N{TIBETAN SUBJOINED LETTER JA}",
112             NY => "\N{TIBETAN SUBJOINED LETTER NYA}",
113             TT => "\N{TIBETAN SUBJOINED LETTER TTA}",
114             TTHA => "\N{TIBETAN SUBJOINED LETTER TTHA}",
115             DD => "\N{TIBETAN SUBJOINED LETTER DDA}",
116             DDHA => "\N{TIBETAN SUBJOINED LETTER DDHA}",
117             NN => "\N{TIBETAN SUBJOINED LETTER NNA}",
118             T => "\N{TIBETAN SUBJOINED LETTER TA}",
119             TH => "\N{TIBETAN SUBJOINED LETTER THA}",
120             D => "\N{TIBETAN SUBJOINED LETTER DA}",
121             DH => "\N{TIBETAN SUBJOINED LETTER DHA}",
122             N => "\N{TIBETAN SUBJOINED LETTER NA}",
123             P => "\N{TIBETAN SUBJOINED LETTER PA}",
124             PH => "\N{TIBETAN SUBJOINED LETTER PHA}",
125             B => "\N{TIBETAN SUBJOINED LETTER BA}",
126             BH => "\N{TIBETAN SUBJOINED LETTER BHA}",
127             M => "\N{TIBETAN SUBJOINED LETTER MA}",
128             TS => "\N{TIBETAN SUBJOINED LETTER TSA}",
129             TSHA => "\N{TIBETAN SUBJOINED LETTER TSHA}",
130             DZ => "\N{TIBETAN SUBJOINED LETTER DZA}",
131             DZHA => "\N{TIBETAN SUBJOINED LETTER DZHA}",
132             W => "\N{TIBETAN SUBJOINED LETTER WA}",
133             ZH => "\N{TIBETAN SUBJOINED LETTER ZHA}",
134             Z => "\N{TIBETAN SUBJOINED LETTER ZA}",
135             # -A => \N{TIBETAN LETTER -A}",
136             Y => "\N{TIBETAN LETTER YA}",
137             R => "\N{TIBETAN LETTER RA}",
138             L => "\N{TIBETAN LETTER LA}",
139             SH => "\N{TIBETAN LETTER SHA}",
140             SS => "\N{TIBETAN LETTER SSA}",
141             S => "\N{TIBETAN LETTER SA}",
142             H => "\N{TIBETAN LETTER HA}",
143             # => "\N{TIBETAN LETTER A}",
144             KSSA => "\N{TIBETAN LETTER KSSA}",
145             # => TIBETAN LETTER FIXED-FORM RA,
146             # => TIBETAN LETTER KKA,
147             # => TIBETAN LETTER RRA,
148             }};
149              
150 1     1   8033 method _build_POSTSCRIPT1 {+{
  0     0      
  0            
151 0           G => "\N{TIBETAN LETTER GA}",
152             NG => "\N{TIBETAN LETTER NGA}",
153             D => "\N{TIBETAN LETTER DA}",
154             N => "\N{TIBETAN LETTER NA}",
155             B => "\N{TIBETAN LETTER BA}",
156             M => "\N{TIBETAN LETTER MA}",
157             W => "\N{TIBETAN LETTER WA}",
158             R => "\N{TIBETAN LETTER RA}",
159             L => "\N{TIBETAN LETTER LA}",
160             S => "\N{TIBETAN LETTER SA}",
161              
162             }};
163              
164 1     1   2345 method _build_POSTSCRIPT2 {+{
  0     0      
  0            
165 0           G => "\N{TIBETAN LETTER GA}",
166             NG => "\N{TIBETAN LETTER NGA}",
167             D => "\N{TIBETAN LETTER DA}",
168             N => "\N{TIBETAN LETTER NA}",
169             B => "\N{TIBETAN LETTER BA}",
170             M => "\N{TIBETAN LETTER MA}",
171             W => "\N{TIBETAN LETTER WA}",
172             R => "\N{TIBETAN LETTER RA}",
173             L => "\N{TIBETAN LETTER LA}",
174             S => "\N{TIBETAN LETTER SA}",
175             }};
176              
177 1     1   4945 method _build_VOWEL {+{
  0     0      
  0            
178 0           A => "\N{TIBETAN VOWEL SIGN AA}",
179             E => "\N{TIBETAN VOWEL SIGN E}",
180             I => "\N{TIBETAN VOWEL SIGN I}",
181             O => "\N{TIBETAN VOWEL SIGN O}",
182             U => "\N{TIBETAN VOWEL SIGN U}",
183             }};
184              
185              
186             sub make_rx {
187 0     0 0   my $hash = shift;
188 0           $_ = join '|',
189 0           sort { length $b <=> length $a }
190 0           keys %{ $hash };
191 0           $_ = '(?:' . $_ . ')';
192 0           return qr{$_}ix;
193             }
194              
195 1     1   2139 method _build_SUPERSCRIPT_RX { make_rx( $self->SUPERSCRIPT ) };
  0     0      
  0            
  0            
196 1     1   646 method _build_SUBSCRIPT_RX { make_rx( $self->SUBSCRIPT ) };
  0     0      
  0            
  0            
197 1     1   576 method _build_PRESCRIPT_RX { make_rx( $self->PRESCRIPT ) };
  0     0      
  0            
  0            
198 1     1   575 method _build_SCRIPT_RX { make_rx( $self->SCRIPT ) };
  0     0      
  0            
  0            
199 1     1   491 method _build_SCRIPT_SUBJ_RX { make_rx( $self->SCRIPT ) };
  0     0      
  0            
  0            
200 1     1   890 method _build_POSTSCRIPT1_RX { make_rx( $self->POSTSCRIPT1 ) };
  0     0      
  0            
  0            
201 1     1   658 method _build_POSTSCRIPT2_RX { make_rx( $self->POSTSCRIPT2 ) };
  0     0      
  0            
  0            
202 1     1   547 method _build_VOWEL_RX { make_rx( $self->VOWEL ) };
  0     0      
  0            
  0            
203              
204 1     1   645 method _build_scheme {
  0     0      
  0            
205 0           qr"
206             (?:
207              
208 0           (?