File Coverage

blib/lib/Lingua/JA/Alphabet/Yomi.pm
Criterion Covered Total %
statement 32 32 100.0
branch 4 6 66.6
condition 3 4 75.0
subroutine 8 8 100.0
pod 1 1 100.0
total 48 51 94.1


line stmt bran cond sub pod time code
1             package Lingua::JA::Alphabet::Yomi;
2 2     2   1520 use strict;
  2         3  
  2         63  
3 2     2   9 use warnings;
  2         3  
  2         80  
4             our $VERSION = '0.02';
5              
6 2     2   936 use utf8;
  2         10  
  2         10  
7 2     2   44 use Carp;
  2         3  
  2         127  
8 2     2   6579 use Unicode::Japanese;
  2         38939  
  2         13  
9              
10 2     2   137 use base 'Exporter';
  2         4  
  2         864  
11             our @EXPORT_OK = qw( alphabet2yomi );
12              
13             our $alphabet2yomi = {
14             en => {qw(
15             A エー B ビー C シー D ディー E イー F エフ G ジー H エッチ I アイ
16             J ジェイ K ケー L エル M エム N エヌ O オー P ピー Q キュー R アール
17             S エス T ティー U ユー V ブイ W ダブリュー X エックス Y ワイ Z ゼット
18             )},
19              
20             fr => {qw(
21             A アー B ベー C セー D デー E ウー F エフ G ジェー H アッシュ I イー
22             J ジー K カー L エル M エム N エヌ O オー P ペー Q クー R エル
23             S エス T テー U ユー V ヴェー W ドゥブラ X イクス Y イグレッグ Z ゼド
24             )},
25              
26             it => {qw(
27             A アー B ビー C チー D ディー E エー F エッフェ G ジー H アッカ I イー
28             J イルンガ K カッパ L エッレ M エンメ N エンネ O オー P ピー Q クー R エッレ
29             S エッセ T ティー U ウー V ヴー W ドッピオヴ X イクス Y イプシロン Z ゼータ
30             )},
31            
32             de => {qw(
33             A アー B ベー C ツェー D デー E エー F エフ G ゲー H ハー I イー
34             J ヨット K カー L エル M エム N エヌ O オー P ペー Q クー R エール
35             S エス T テー U ウー V ファウ W ヴェー X イクス Y ユプスィロン Z ツェット
36             )},
37             };
38              
39             sub alphabet2yomi {
40 6 50   6 1 42 my $class = shift if $_[0] eq __PACKAGE__; ## no critic
41 6         10 my ($text, $lang) = @_;
42            
43 6   50     15 $text ||= "";
44 6   100     84 $lang = lc $lang || 'en';
45            
46 6 100       37 croak "lang:$lang is not supported"
47             unless exists $alphabet2yomi->{$lang};
48            
49 5         35 $text =~ s{(\p{Latin})}{
50 12         24 my $char = $1;
51 12         46 my $work = Unicode::Japanese->new($char);
52 12         7714 $work = uc $work->z2hAlpha->getu;
53            
54 12 50       5620 $alphabet2yomi->{$lang}{$work} || $char;
55 2     2   10 }ge;
  2         13  
  2         31  
56              
57 5         23 $text;
58             }
59              
60             1;
61             __END__