File Coverage

blib/lib/Acme/Albedo.pm
Criterion Covered Total %
statement 25 25 100.0
branch 2 2 100.0
condition n/a
subroutine 8 8 100.0
pod 2 3 66.6
total 37 38 97.3


line stmt bran cond sub pod time code
1             package Acme::Albedo;
2 1     1   526 use 5.20.2;
  1         3  
3 1     1   3 use strict;
  1         1  
  1         19  
4 1     1   11 use warnings;
  1         1  
  1         43  
5 1     1   456 use Encode;
  1         7350  
  1         80  
6 1     1   370 use parent 'Exporter';
  1         210  
  1         4  
7              
8             our @EXPORT = qw( to_albedo to_spira );
9              
10             our $VERSION = "0.01";
11              
12             my %dict_spira = (
13             "ワ" => "あ", "ミ" => "い", "フ" => "う", "ネ" => "え", "ト" => "お",
14             "ア" => "か", "チ" => "き", "ル" => "く", "テ" => "け", "ヨ" => "こ",
15             "ラ" => "さ", "キ" => "し", "ヌ" => "す", "ヘ" => "せ", "ホ" => "そ",
16             "サ" => "た", "ヒ" => "ち", "ユ" => "つ", "セ" => "て", "ソ" => "と",
17             "ハ" => "な", "シ" => "に", "ス" => "ぬ", "メ" => "ね", "オ" => "の",
18             "マ" => "は", "リ" => "ひ", "ク" => "ふ", "ケ" => "へ", "ロ" => "ほ",
19             "ヤ" => "ま", "イ" => "み", "ツ" => "む", "レ" => "め", "コ" => "も",
20             "タ" => "や", "ヲ" => "ゆ", "モ" => "よ",
21             "ナ" => "ら", "二" => "り", "ウ" => "る", "エ" => "れ", "ノ" => "ろ",
22             "カ" => "わ", "ム" => "を", "ン" => "ん",
23             "ダ" => "が", "ジ" => "ぎ", "ヅ" => "ぐ", "デ" => "げ", "ゾ" => "ご",
24             "バ" => "ざ", "ギ" => "じ", "ブ" => "ず", "ゲ" => "ぜ", "ボ" => "ぞ",
25             "ガ" => "だ", "ビ" => "ぢ", "グ" => "づ", "ベ" => "で", "ゴ" => "ど",
26             "ザ" => "ば", "ヂ" => "び", "ズ" => "ぶ", "ゼ" => "べ", "ド" => "ぼ",
27             "プ" => "ぱ", "ペ" => "ぴ", "パ" => "ぷ", "ポ" => "ぺ", "ピ" => "ぽ",
28             "ァ" => "ぁ", "ィ" => "ぃ", "ゥ" => "ぅ", "ェ" => "ぇ", "ォ" => "ぉ",
29             "ッ" => "っ", "ャ" => "ゃ", "ュ" => "ゅ", "ョ" => "ょ",
30             );
31              
32             my %dict_albedo = (
33             "あ" => "ワ", "い" => "ミ", "う" => "フ", "え" => "ネ", "お" => "ト",
34             "か" => "ア", "き" => "チ", "く" => "ル", "け" => "テ", "こ" => "ヨ",
35             "さ" => "ラ", "し" => "キ", "す" => "ヌ", "せ" => "ヘ", "そ" => "ホ",
36             "た" => "サ", "ち" => "ヒ", "つ" => "ユ", "て" => "セ", "と" => "ソ",
37             "な" => "ハ", "に" => "シ", "ぬ" => "ス", "ね" => "メ", "の" => "オ",
38             "は" => "マ", "ひ" => "リ", "ふ" => "ク", "へ" => "ケ", "ほ" => "ロ",
39             "ま" => "ヤ", "み" => "イ", "む" => "ツ", "め" => "レ", "も" => "コ",
40             "や" => "タ", "ゆ" => "ヲ", "よ" => "モ",
41             "ら" => "ナ", "り" => "二", "る" => "ウ", "れ" => "エ", "ろ" => "ノ",
42             "わ" => "カ", "を" => "ム", "ん" => "ン",
43             "が" => "ダ", "ぎ" => "ジ", "ぐ" => "ヅ", "げ" => "デ", "ご" => "ゾ",
44             "ざ" => "バ", "じ" => "ギ", "ず" => "ブ", "ぜ" => "ゲ", "ぞ" => "ボ",
45             "だ" => "ガ", "ぢ" => "ビ", "づ" => "グ", "で" => "ベ", "ど" => "ゴ",
46             "ば" => "ザ", "び" => "ヂ", "ぶ" => "ズ", "べ" => "ゼ", "ぼ" => "ド",
47             "ぱ" => "プ", "ぴ" => "ペ", "ぷ" => "パ", "ぺ" => "ポ", "ぽ" => "ピ",
48             "ぁ" => "ァ", "ぃ" => "ィ", "ぅ" => "ゥ", "ぇ" => "ェ", "ぉ" => "ォ",
49             "っ" => "ッ", "ゃ" => "ャ", "ゅ" => "ュ", "ょ" => "ョ",
50             );
51              
52             sub translate {
53 2     2 0 25 my ($in, %dict) = @_;
54 2         3 my $out;
55              
56 2         5 utf8::decode($in);
57              
58 2         17 foreach (split //, $in) {
59 162         120 utf8::encode($_);
60 162 100       171 $out .= exists $dict{$_} ? $dict{$_} : $_;
61             }
62              
63 2         19 $out;
64             }
65              
66             sub to_albedo {
67 1     1 1 387 my ($in) = @_;
68 1         12 &translate($in, %dict_albedo);
69             }
70              
71             sub to_spira {
72 1     1 1 258 my ($in) = @_;
73 1         11 &translate($in, %dict_spira);
74             }
75              
76             1;
77             __END__