File Coverage

blib/lib/Lingua/JA/Romaji.pm
Criterion Covered Total %
statement 9 71 12.6
branch 0 26 0.0
condition 0 9 0.0
subroutine 3 5 60.0
pod 0 2 0.0
total 12 113 10.6


line stmt bran cond sub pod time code
1             package Lingua::JA::Romaji;
2              
3 1     1   6999 use 5.006;
  1         3  
  1         41  
4 1     1   6 use strict;
  1         2  
  1         28  
5 1     1   5 use warnings;
  1         6  
  1         3840  
6              
7             require Exporter;
8              
9             our @ISA = qw(Exporter);
10              
11             # Items to export into callers namespace by default. Note: do not export
12             # names by default without a very good reason. Use EXPORT_OK instead.
13             # Do not simply export all your public functions/methods/constants.
14              
15             # This allows declaration use Lingua::JA::Romaji ':all';
16             # If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
17             # will save memory.
18             our %EXPORT_TAGS = ( 'all' => [ qw(
19             &romajitokana &kanatoromaji %hiragana %katakana
20             ) ] );
21              
22             our @EXPORT_OK = ( qw( &kanatoromaji %hiragana %katakana ));
23              
24             our @EXPORT = qw(
25             &romajitokana
26             );
27             our $VERSION = '0.03';
28              
29              
30             # Preloaded methods go here.
31              
32             #romajitokana ( romaji, kanatype)
33             #kanatype == ``hira'' or ``kana''.
34             sub romajitokana {
35             #let's ignore case
36 0     0 0   my $romaji = lc $_[0];
37 0           my $kanatype;
38 0 0         return unless $romaji;
39 0 0 0       if((defined $_[1]) && ($_[1] =~ m/kata/i)) {
40 0           $kanatype = "kata";
41             } else {
42 0           $kanatype = "hira";
43             }
44             #handle goofy stuff with solitary and doubled n
45 0           $romaji =~ s/[nm]([nm])/q$1/gi;
46 0           $romaji =~ s/n\'/q/gi;
47 0           $romaji =~ s/n$/q/gi;
48             #handle regular stuff with singular n. Is first regex necessary?
49 0           $romaji =~ s/[nm]([bcdfghjkmnprstvz])/q$1/gi;
50             #handle double consonants, perhaps ineffectually
51 0 0         if ($romaji =~ m/([bcdfghjkmnprstvz])\1/i){
52 0           $romaji=~ s/([bcdfghjkmnprstvz])$1/\*$1/gi;
53             }
54 0           my @roma = split(//,$romaji);
55 0           my $curst = $roma[0];
56 0           my $i=0;
57 0           my $next = " ";
58 0           my $output = "";
59 0   0       while ((defined $next)&&($roma[$i] =~ m/[a-z\-\*]/i)) {
60 0           $next = $roma[$i+1];
61 0 0         unless ($next){
62 0 0         if ($Lingua::JA::Romaji::roma{$curst}->{$kanatype}) {
63 0           $output.=$Lingua::JA::Romaji::roma{$curst}->{$kanatype};
64 0           $curst = "";
65             }
66             }
67 0 0         next unless $next;
68 0 0         unless ($Lingua::JA::Romaji::roma{$curst . $next}) {
69             #we've gone too far, so print out what we've got, if anything
70 0 0         if ($Lingua::JA::Romaji::roma{$curst}->{$kanatype}) {
71 0           $output.=$Lingua::JA::Romaji::roma{$curst}->{$kanatype};
72 0           $curst = "";
73              
74             }
75             } else {
76             #if we're here, then curst.next is valid...
77 0 0         unless ($roma[$i+2]){
78             #...and there's nothing else
79 0           $output.=$Lingua::JA::Romaji::roma{$curst . $next}->{$kanatype};
80 0           $curst ="";
81 0           $next = "";
82             }
83             }
84 0           $i++;
85 0           $curst = $curst . $next;
86             }
87 0           return $output;
88             }
89              
90             #kanatoromaji(kana)
91             sub kanatoromaji {
92 0     0 0   my $kana = $_[0];
93 0           my $rawb = unpack("H32", $kana);
94             # print "$rawb\n";
95 0           my $scratchkana = $kana;
96 0           my $hirabegin = chr(0xA4);
97 0           my $katabegin = chr(0xA5);
98 0           my @skb = split(//,$scratchkana);
99 0           my $newroma="";
100 0           my $kanatype;
101 0 0         if ($skb[0] eq $katabegin) {
102 0           $kanatype = 1;
103             } else {
104 0           $kanatype = 0;
105             }
106 0           while (my $thisbyte = shift @skb) {
107 0 0 0       if (($thisbyte eq $hirabegin) || ($thisbyte eq $katabegin)) {
108 0           my $nextbyte = shift @skb;
109 0 0         if ($Lingua::JA::Romaji::allkana{$thisbyte . $nextbyte}) {
110 0           $newroma .= $Lingua::JA::Romaji::allkana{$thisbyte . $nextbyte};
111             } else {
112 0           $newroma .= $thisbyte . $nextbyte;
113             }
114             } else {
115 0           $newroma .= $thisbyte;
116             }
117             }
118              
119 0           $newroma =~ s/\'$//;
120 0           $newroma =~ s/n\'([^aeiouy])/n$1/gi;
121 0           $newroma =~ s/\*(.)/$1$1/g;
122 0           $newroma =~ s/ixy(.)/$1/ig;
123 0           $newroma =~ s/ix(.)/y$1/ig;
124 0           $newroma =~ s/ux(.)/$1/ig;
125 0 0         if ($kanatype) {
126 0           return uc $newroma;
127             }
128 0           return $newroma;
129             }
130              
131             %Lingua::JA::Romaji::hiragana = (
132             '・' => '.',
133             'ー' => '-',
134             'きゃ' => 'kya',
135             'きゅ' => 'kyu',
136             'じぇ' => 'jye',
137             'きょ' => 'kyo',
138             'でゃ' => 'dya',
139             'でゅ' => 'dyu',
140             'ひぇ' => 'hye',
141             'でょ' => 'dyo',
142             'ぴゃ' => 'pya',
143             'ぴゅ' => 'pyu',
144             'みぇ' => 'mye',
145             'ぴょ' => 'pyo',
146             'ぢゃ' => 'dja',
147             'ぢゅ' => 'dju',
148             'ぢょ' => 'djo',
149             'ぎぇ' => 'gye',
150             'ふぁ' => 'fa',
151             'ふぃ' => 'fi',
152             'ふぇ' => 'fye',
153             'ふぉ' => 'fo',
154             'じゃ' => 'jya',
155             'じゅ' => 'jyu',
156             'じょ' => 'jyo',
157             'ぁ' => 'xa',
158             'あ' => 'a',
159             'ぃ' => 'xi',
160             'い' => 'i',
161             'ぅ' => 'xu',
162             'ひゃ' => 'hya',
163             'う' => 'u',
164             'ぇ' => 'xe',
165             'ひゅ' => 'hyu',
166             'え' => 'ye',
167             'ぉ' => 'xo',
168             'お' => 'o',
169             'ひょ' => 'hyo',
170             'か' => 'ka',
171             'が' => 'ga',
172             'き' => 'ki',
173             'みゃ' => 'mya',
174             'ぎ' => 'gi',
175             'く' => 'ku',
176             'みゅ' => 'myu',
177             'ぐ' => 'gu',
178             'りぇ' => 'rye',
179             'け' => 'ke',
180             'みょ' => 'myo',
181             'げ' => 'ge',
182             'にぇ' => 'nye',
183             'こ' => 'ko',
184             'ご' => 'go',
185             'さ' => 'sa',
186             'ざ' => 'za',
187             'っち' => 'tchi',
188             'し' => 'syi',
189             'っちぇ' => 'tche',
190             'じ' => 'jyi',
191             'ぎゃ' => 'gya',
192             'す' => 'su',
193             'ず' => 'zu',
194             'ぎゅ' => 'gyu',
195             'せ' => 'se',
196             'ぎょ' => 'gyo',
197             'ぜ' => 'ze',
198             'そ' => 'so',
199             'ぞ' => 'zo',
200             'た' => 'ta',
201             'だ' => 'da',
202             'ち' => 'tyi',
203             'ぢ' => 'dji',
204             'っ' => 't-',
205             'つ' => 'tu',
206             'づ' => 'dzu',
207             'て' => 'te',
208             'で' => 'de',
209             'と' => 'to',
210             'ど' => 'do',
211             'な' => 'na',
212             'に' => 'ni',
213             'びぇ' => 'bye',
214             'ぬ' => 'nu',
215             'ね' => 'ne',
216             'の' => 'no',
217             'は' => 'ha',
218             'ふゃ' => 'fya',
219             'ば' => 'ba',
220             'ぱ' => 'pa',
221             'ふゅ' => 'fyu',
222             'ひ' => 'hi',
223             'び' => 'bi',
224             'ふょ' => 'fyo',
225             'ちぇ' => 'tye',
226             'ぴ' => 'pi',
227             'ふ' => 'hu',
228             'ぶ' => 'bu',
229             'ぷ' => 'pu',
230             'へ' => 'he',
231             'べ' => 'be',
232             'ぺ' => 'pe',
233             'ほ' => 'ho',
234             'ぼ' => 'bo',
235             'ぽ' => 'po',
236             'ま' => 'ma',
237             'み' => 'mi',
238             'む' => 'mu',
239             'め' => 'me',
240             'も' => 'mo',
241             'ゃ' => 'xya',
242             'や' => 'ya',
243             'ゅ' => 'xyu',
244             'ゆ' => 'yu',
245             'ょ' => 'xyo',
246             'よ' => 'yo',
247             'ら' => 'ra',
248             'どぅ' => 'du',
249             'り' => 'ri',
250             'る' => 'ru',
251             'れ' => 're',
252             'ろ' => 'ro',
253             'りゃ' => 'rya',
254             'ゎ' => 'xwa',
255             'わ' => 'wa',
256             'りゅ' => 'ryu',
257             'にゃ' => 'nya',
258             'ゐ' => 'wi',
259             'ゑ' => 'we',
260             'りょ' => 'ryo',
261             'にゅ' => 'nyu',
262             'を' => 'wo',
263             'ん' => 'q',
264             'っちゃ' => 'tcha',
265             'にょ' => 'nyo',
266             'しぇ' => 'sye',
267             'っちゅ' => 'tchu',
268             'つぁ' => 'tsa',
269             'っちょ' => 'tcho',
270             'つぇ' => 'tse',
271             'つぉ' => 'tso',
272             'びゃ' => 'bya',
273             'びゅ' => 'byu',
274             'びょ' => 'byo',
275             'ちゃ' => 'tya',
276             'ちゅ' => 'tyu',
277             'ちょ' => 'tyo',
278             'きぇ' => 'kye',
279             'でぃ' => 'di',
280             'でぇ' => 'dye',
281             'ぴぇ' => 'pye',
282             'しゃ' => 'sya',
283             'しゅ' => 'syu',
284             'ぢぇ' => 'dje',
285             'しょ' => 'syo'
286             );
287             %Lingua::JA::Romaji::katakana = (
288             'キュ' => 'kyu',
289             'ジェ' => 'jye',
290             'キョ' => 'kyo',
291             '・' => '.',
292             'デャ' => 'dya',
293             'デュ' => 'dyu',
294             'ヒェ' => 'hye',
295             'デョ' => 'dyo',
296             'ピャ' => 'pya',
297             'ピュ' => 'pyu',
298             'ミェ' => 'mye',
299             'ー' => '-',
300             'ピョ' => 'pyo',
301             'ヂャ' => 'dja',
302             'ヂュ' => 'dju',
303             'ヂョ' => 'djo',
304             'ギェ' => 'gye',
305             'ヴァ' => 'va',
306             'ヴィ' => 'vi',
307             'ファ' => 'fa',
308             'フィ' => 'fi',
309             'ヴェ' => 've',
310             'ヴォ' => 'vo',
311             'フェ' => 'fye',
312             'フォ' => 'fo',
313             'ジャ' => 'jya',
314             'ジュ' => 'jyu',
315             'ジョ' => 'jyo',
316             'ッチェ' => 'tche',
317             'ヒャ' => 'hya',
318             'ヒュ' => 'hyu',
319             'ヒョ' => 'hyo',
320             'ミャ' => 'mya',
321             'ミュ' => 'myu',
322             'リェ' => 'rye',
323             'ミョ' => 'myo',
324             'ニェ' => 'nye',
325             'ッチ' => 'tchi',
326             'ギャ' => 'gya',
327             'ギュ' => 'gyu',
328             'ギョ' => 'gyo',
329             'ビェ' => 'bye',
330             'フャ' => 'fya',
331             'フュ' => 'fyu',
332             'フョ' => 'fyo',
333             'チェ' => 'tye',
334             'ッチャ' => 'tcha',
335             'ァ' => 'xa',
336             'ッチュ' => 'tchu',
337             'ア' => 'a',
338             'ィ' => 'xi',
339             'ッチョ' => 'tcho',
340             'イ' => 'i',
341             'ゥ' => 'xu',
342             'ウ' => 'u',
343             'ェ' => 'xe',
344             'エ' => 'ye',
345             'ォ' => 'xo',
346             'オ' => 'o',
347             'カ' => 'ka',
348             'ガ' => 'ga',
349             'キ' => 'ki',
350             'ギ' => 'gi',
351             'ク' => 'ku',
352             'ドゥ' => 'du',
353             'グ' => 'gu',
354             'ケ' => 'ke',
355             'ゲ' => 'ge',
356             'リャ' => 'rya',
357             'コ' => 'ko',
358             'ゴ' => 'go',
359             'リュ' => 'ryu',
360             'サ' => 'sa',
361             'ニャ' => 'nya',
362             'ザ' => 'za',
363             'リョ' => 'ryo',
364             'シ' => 'syi',
365             'ニュ' => 'nyu',
366             'ジ' => 'jyi',
367             'ス' => 'su',
368             'ニョ' => 'nyo',
369             'ズ' => 'zu',
370             'シェ' => 'sye',
371             'セ' => 'se',
372             'ツァ' => 'tsa',
373             'ゼ' => 'ze',
374             'ソ' => 'so',
375             'ゾ' => 'zo',
376             'タ' => 'ta',
377             'ダ' => 'da',
378             'チ' => 'tyi',
379             'ツェ' => 'tse',
380             'ヂ' => 'dji',
381             'ッ' => 't-',
382             'ツォ' => 'tso',
383             'ツ' => 'tu',
384             'ヅ' => 'dzu',
385             'テ' => 'te',
386             'デ' => 'de',
387             'ト' => 'to',
388             'ド' => 'do',
389             'ナ' => 'na',
390             'ニ' => 'ni',
391             'ヌ' => 'nu',
392             'ネ' => 'ne',
393             'ビャ' => 'bya',
394             'ノ' => 'no',
395             'ハ' => 'ha',
396             'ビュ' => 'byu',
397             'バ' => 'ba',
398             'パ' => 'pa',
399             'ビョ' => 'byo',
400             'ヒ' => 'hi',
401             'ビ' => 'bi',
402             'ピ' => 'pi',
403             'フ' => 'hu',
404             'チャ' => 'tya',
405             'ブ' => 'bu',
406             'プ' => 'pu',
407             'チュ' => 'tyu',
408             'ヘ' => 'he',
409             'ベ' => 'be',
410             'チョ' => 'tyo',
411             'ペ' => 'pe',
412             'キェ' => 'kye',
413             'ホ' => 'ho',
414             'ボ' => 'bo',
415             'ポ' => 'po',
416             'マ' => 'ma',
417             'ミ' => 'mi',
418             'ム' => 'mu',
419             'メ' => 'me',
420             'モ' => 'mo',
421             'ャ' => 'xya',
422             'ヤ' => 'ya',
423             'ュ' => 'xyu',
424             'ディ' => 'di',
425             'ユ' => 'yu',
426             'ョ' => 'xyo',
427             'ヨ' => 'yo',
428             'ラ' => 'ra',
429             'デェ' => 'dye',
430             'リ' => 'ri',
431             'ル' => 'ru',
432             'レ' => 're',
433             'ロ' => 'ro',
434             'ヮ' => 'xwa',
435             'ワ' => 'wa',
436             'ヰ' => 'wi',
437             'ヱ' => 'we',
438             'ピェ' => 'pye',
439             'ヲ' => 'wo',
440             'ン' => 'q',
441             'ヴ' => 'vu',
442             'ヵ' => 'xka',
443             'ヶ' => 'xke',
444             'シャ' => 'sya',
445             'シュ' => 'syu',
446             'ヂェ' => 'dje',
447             'ショ' => 'syo',
448             'キャ' => 'kya'
449             );
450             %Lingua::JA::Romaji::roma = (
451             'fo' => {
452             'kata' => 'フォ',
453             'hira' => 'ふぉ'
454             },
455             'fyu' => {
456             'kata' => 'フュ',
457             'hira' => 'ふゅ'
458             },
459             'na' => {
460             'kata' => 'ナ',
461             'hira' => 'な'
462             },
463             'syo' => {
464             'kata' => 'ショ',
465             'hira' => 'しょ'
466             },
467             'fu' => {
468             'kata' => 'フ',
469             'hira' => 'ふ'
470             },
471             'ne' => {
472             'kata' => 'ネ',
473             'hira' => 'ね'
474             },
475             'nya' => {
476             'kata' => 'ニャ',
477             'hira' => 'にゃ'
478             },
479             'xka' => {
480             'kata' => 'ヵ'
481             },
482             'nye' => {
483             'kata' => 'ニェ',
484             'hira' => 'にぇ'
485             },
486             'ni' => {
487             'kata' => 'ニ',
488             'hira' => 'に'
489             },
490             'syu' => {
491             'kata' => 'シュ',
492             'hira' => 'しゅ'
493             },
494             'xke' => {
495             'kata' => 'ヶ'
496             },
497             'no' => {
498             'kata' => 'ノ',
499             'hira' => 'の'
500             },
501             'va' => {
502             'kata' => 'ヴァ',
503             'hira' => 'ヴぁ'
504             },
505             'nyo' => {
506             'kata' => 'ニョ',
507             'hira' => 'にょ'
508             },
509             'ga' => {
510             'kata' => 'ガ',
511             'hira' => 'が'
512             },
513             've' => {
514             'kata' => 'ヴェ',
515             'hira' => 'ヴぇ'
516             },
517             'nu' => {
518             'kata' => 'ヌ',
519             'hira' => 'ぬ'
520             },
521             'ge' => {
522             'kata' => 'ゲ',
523             'hira' => 'げ'
524             },
525             'vi' => {
526             'kata' => 'ヴィ',
527             'hira' => 'ヴぃ'
528             },
529             'nyu' => {
530             'kata' => 'ニュ',
531             'hira' => 'にゅ'
532             },
533             'gi' => {
534             'kata' => 'ギ',
535             'hira' => 'ぎ'
536             },
537             'vo' => {
538             'kata' => 'ヴォ',
539             'hira' => 'ヴぉ '
540             },
541             'go' => {
542             'kata' => 'ゴ',
543             'hira' => 'ご'
544             },
545             'vu' => {
546             'kata' => 'ヴ',
547             'hira' => 'ヴ'
548             },
549             'dya' => {
550             'kata' => 'デャ',
551             'hira' => 'でゃ'
552             },
553             'gu' => {
554             'kata' => 'グ',
555             'hira' => 'ぐ'
556             },
557             'dja' => {
558             'kata' => 'ヂャ',
559             'hira' => 'ぢゃ'
560             },
561             '*' => {
562             'kata' => 'ッ',
563             'hira' => 'っ'
564             },
565             'dye' => {
566             'kata' => 'デェ',
567             'hira' => 'でぇ'
568             },
569             'dje' => {
570             'kata' => 'ヂェ',
571             'hira' => 'ぢぇ'
572             },
573             '-' => {
574             'kata' => 'ー',
575             'hira' => 'ー'
576             },
577             '.' => {
578             'kata' => '・',
579             'hira' => '・'
580             },
581             'dji' => {
582             'kata' => 'ヂ',
583             'hira' => 'ぢ'
584             },
585             'wa' => {
586             'kata' => 'ワ',
587             'hira' => 'わ'
588             },
589             'ha' => {
590             'kata' => 'ハ',
591             'hira' => 'は'
592             },
593             'dyo' => {
594             'kata' => 'デョ',
595             'hira' => 'でょ'
596             },
597             'djo' => {
598             'kata' => 'ヂョ',
599             'hira' => 'ぢょ'
600             },
601             'we' => {
602             'kata' => 'ヱ',
603             'hira' => 'ゑ'
604             },
605             'he' => {
606             'kata' => 'ヘ',
607             'hira' => 'へ'
608             },
609             'dyu' => {
610             'kata' => 'デュ',
611             'hira' => 'でゅ'
612             },
613             'wi' => {
614             'kata' => 'ヰ',
615             'hira' => 'ゐ'
616             },
617             'hi' => {
618             'kata' => 'ヒ',
619             'hira' => 'ひ'
620             },
621             'dju' => {
622             'kata' => 'ヂュ',
623             'hira' => 'ぢゅ'
624             },
625             'wo' => {
626             'kata' => 'ヲ',
627             'hira' => 'を'
628             },
629             'ho' => {
630             'kata' => 'ホ',
631             'hira' => 'ほ'
632             },
633             'pa' => {
634             'kata' => 'パ',
635             'hira' => 'ぱ'
636             },
637             'dza' => {
638             'kata' => 'ヂャ',
639             'hira' => 'ぢゃ'
640             },
641             'pe' => {
642             'kata' => 'ペ',
643             'hira' => 'ぺ'
644             },
645             'hu' => {
646             'kata' => 'フ',
647             'hira' => 'ふ'
648             },
649             'pi' => {
650             'kata' => 'ピ',
651             'hira' => 'ぴ'
652             },
653             'dze' => {
654             'kata' => 'ヂェ',
655             'hira' => 'ぢぇ'
656             },
657             'gya' => {
658             'kata' => 'ギャ',
659             'hira' => 'ぎゃ'
660             },
661             'dzi' => {
662             'kata' => 'ヂ',
663             'hira' => 'ぢ'
664             },
665             'po' => {
666             'kata' => 'ポ',
667             'hira' => 'ぽ'
668             },
669             'gye' => {
670             'kata' => 'ギェ',
671             'hira' => 'ぎぇ'
672             },
673             'tcha' => {
674             'kata' => 'ッチャ',
675             'hira' => 'っちゃ'
676             },
677             'xa' => {
678             'kata' => 'ァ',
679             'hira' => 'ぁ'
680             },
681             'dzo' => {
682             'kata' => 'ヂョ',
683             'hira' => 'ぢょ'
684             },
685             'tya' => {
686             'kata' => 'チャ',
687             'hira' => 'ちゃ'
688             },
689             'tche' => {
690             'kata' => 'ッチェ',
691             'hira' => 'っちぇ'
692             },
693             'xe' => {
694             'kata' => 'ェ',
695             'hira' => 'ぇ'
696             },
697             'pu' => {
698             'kata' => 'プ',
699             'hira' => 'ぷ'
700             },
701             'tye' => {
702             'kata' => 'チェ',
703             'hira' => 'ちぇ'
704             },
705             'dzu' => {
706             'kata' => 'ヅ',
707             'hira' => 'づ'
708             },
709             'tchi' => {
710             'kata' => 'ッチ',
711             'hira' => 'っち'
712             },
713             'gyo' => {
714             'kata' => 'ギョ',
715             'hira' => 'ぎょ'
716             },
717             'xi' => {
718             'kata' => 'ィ',
719             'hira' => 'ぃ'
720             },
721             'tyi' => {
722             'kata' => 'チ',
723             'hira' => 'ち'
724             },
725             'bya' => {
726             'kata' => 'ビャ',
727             'hira' => 'びゃ'
728             },
729             'a' => {
730             'kata' => 'ア',
731             'hira' => 'あ'
732             },
733             'tcho' => {
734             'kata' => 'ッチョ',
735             'hira' => 'っちょ'
736             },
737             'gyu' => {
738             'kata' => 'ギュ',
739             'hira' => 'ぎゅ'
740             },
741             'xo' => {
742             'kata' => 'ォ',
743             'hira' => 'ぉ'
744             },
745             'bye' => {
746             'kata' => 'ビェ',
747             'hira' => 'びぇ'
748             },
749             'tyo' => {
750             'kata' => 'チョ',
751             'hira' => 'ちょ'
752             },
753             'e' => {
754             'kata' => 'エ',
755             'hira' => 'え'
756             },
757             'ba' => {
758             'kata' => 'バ',
759             'hira' => 'ば'
760             },
761             'tchu' => {
762             'kata' => 'ッチュ',
763             'hira' => 'っちゅ'
764             },
765             'i' => {
766             'kata' => 'イ',
767             'hira' => 'い'
768             },
769             'xu' => {
770             'kata' => 'ゥ',
771             'hira' => 'ぅ'
772             },
773             'tyu' => {
774             'kata' => 'チュ',
775             'hira' => 'ちゅ'
776             },
777             'be' => {
778             'kata' => 'ベ',
779             'hira' => 'べ'
780             },
781             'byo' => {
782             'kata' => 'ビョ',
783             'hira' => 'びょ'
784             },
785             'o' => {
786             'kata' => 'オ',
787             'hira' => 'お'
788             },
789             'bi' => {
790             'kata' => 'ビ',
791             'hira' => 'び'
792             },
793             'q' => {
794             'kata' => 'ン',
795             'hira' => 'ん'
796             },
797             'byu' => {
798             'kata' => 'ビュ',
799             'hira' => 'びゅ'
800             },
801             'u' => {
802             'kata' => 'ウ',
803             'hira' => 'う'
804             },
805             'ya' => {
806             'kata' => 'ヤ',
807             'hira' => 'や'
808             },
809             'bo' => {
810             'kata' => 'ボ',
811             'hira' => 'ぼ'
812             },
813             'ja' => {
814             'kata' => 'ジャ',
815             'hira' => 'じゃ'
816             },
817             'jya' => {
818             'kata' => 'ジャ',
819             'hira' => 'じゃ'
820             },
821             'ye' => {
822             'kata' => 'エ',
823             'hira' => 'え'
824             },
825             'bu' => {
826             'kata' => 'ブ',
827             'hira' => 'ぶ'
828             },
829             'je' => {
830             'kata' => 'ジェ',
831             'hira' => 'じぇ'
832             },
833             'jye' => {
834             'kata' => 'ジェ',
835             'hira' => 'じぇ'
836             },
837             'ji' => {
838             'kata' => 'ジ',
839             'hira' => 'じ'
840             },
841             'jyi' => {
842             'kata' => 'ジ',
843             'hira' => 'じ'
844             },
845             'cha' => {
846             'kata' => 'チャ',
847             'hira' => 'ちゃ'
848             },
849             'che' => {
850             'kata' => 'チェ',
851             'hira' => 'ちぇ'
852             },
853             'yo' => {
854             'kata' => 'ヨ',
855             'hira' => 'よ'
856             },
857             'jo' => {
858             'kata' => 'ジョ',
859             'hira' => 'じょ'
860             },
861             'jyo' => {
862             'kata' => 'ジョ',
863             'hira' => 'じょ'
864             },
865             'ra' => {
866             'kata' => 'ラ',
867             'hira' => 'ら'
868             },
869             'chi' => {
870             'kata' => 'チ',
871             'hira' => 'ち'
872             },
873             'tsa' => {
874             'kata' => 'ツァ',
875             'hira' => 'つぁ'
876             },
877             'yu' => {
878             'kata' => 'ユ',
879             'hira' => 'ゆ'
880             },
881             're' => {
882             'kata' => 'レ',
883             'hira' => 'れ'
884             },
885             'ju' => {
886             'kata' => 'ジュ',
887             'hira' => 'じゅ'
888             },
889             'jyu' => {
890             'kata' => 'ジュ',
891             'hira' => 'じゅ'
892             },
893             'cho' => {
894             'kata' => 'チョ',
895             'hira' => 'ちょ'
896             },
897             'tse' => {
898             'kata' => 'ツェ',
899             'hira' => 'つぇ'
900             },
901             'rya' => {
902             'kata' => 'リャ',
903             'hira' => 'りゃ'
904             },
905             'ri' => {
906             'kata' => 'リ',
907             'hira' => 'り'
908             },
909             'rye' => {
910             'kata' => 'リェ',
911             'hira' => 'りぇ'
912             },
913             'chu' => {
914             'kata' => 'チュ',
915             'hira' => 'ちゅ'
916             },
917             'ro' => {
918             'kata' => 'ロ',
919             'hira' => 'ろ'
920             },
921             't-' => {
922             'kata' => 'ッ',
923             'hira' => 'っ'
924             },
925             'za' => {
926             'kata' => 'ザ',
927             'hira' => 'ざ'
928             },
929             'tso' => {
930             'kata' => 'ツォ',
931             'hira' => 'つぉ'
932             },
933             'ka' => {
934             'kata' => 'カ',
935             'hira' => 'か'
936             },
937             'ze' => {
938             'kata' => 'ゼ',
939             'hira' => 'ぜ'
940             },
941             'ru' => {
942             'kata' => 'ル',
943             'hira' => 'る'
944             },
945             'xwa' => {
946             'kata' => 'ヮ',
947             'hira' => 'ゎ'
948             },
949             'ryo' => {
950             'kata' => 'リョ',
951             'hira' => 'りょ'
952             },
953             'ke' => {
954             'kata' => 'ケ',
955             'hira' => 'け'
956             },
957             'tsu' => {
958             'kata' => 'ツ',
959             'hira' => 'つ'
960             },
961             'mya' => {
962             'kata' => 'ミャ',
963             'hira' => 'みゃ'
964             },
965             'zi' => {
966             'kata' => 'ジ',
967             'hira' => 'じ'
968             },
969             'ki' => {
970             'kata' => 'キ',
971             'hira' => 'き'
972             },
973             'ryu' => {
974             'kata' => 'リュ',
975             'hira' => 'りゅ'
976             },
977             'mye' => {
978             'kata' => 'ミェ',
979             'hira' => 'みぇ'
980             },
981             'zo' => {
982             'kata' => 'ゾ',
983             'hira' => 'ぞ'
984             },
985             'ko' => {
986             'kata' => 'コ',
987             'hira' => 'こ'
988             },
989             'sa' => {
990             'kata' => 'サ',
991             'hira' => 'さ'
992             },
993             'da' => {
994             'kata' => 'ダ',
995             'hira' => 'だ'
996             },
997             'zu' => {
998             'kata' => 'ズ',
999             'hira' => 'ず'
1000             },
1001             'se' => {
1002             'kata' => 'セ',
1003             'hira' => 'せ'
1004             },
1005             'myo' => {
1006             'kata' => 'ミョ',
1007             'hira' => 'みょ'
1008             },
1009             'ku' => {
1010             'kata' => 'ク',
1011             'hira' => 'く'
1012             },
1013             'sha' => {
1014             'kata' => 'シャ',
1015             'hira' => 'しゃ'
1016             },
1017             'de' => {
1018             'kata' => 'デ',
1019             'hira' => 'で'
1020             },
1021             'si' => {
1022             'kata' => 'シ',
1023             'hira' => 'し'
1024             },
1025             'hya' => {
1026             'kata' => 'ヒャ',
1027             'hira' => 'ひゃ'
1028             },
1029             'di' => {
1030             'kata' => 'ディ',
1031             'hira' => 'でぃ'
1032             },
1033             'myu' => {
1034             'kata' => 'ミュ',
1035             'hira' => 'みゅ'
1036             },
1037             'she' => {
1038             'kata' => 'シェ',
1039             'hira' => 'しぇ'
1040             },
1041             'hye' => {
1042             'kata' => 'ヒェ',
1043             'hira' => 'ひぇ'
1044             },
1045             'shi' => {
1046             'kata' => 'シ',
1047             'hira' => 'し'
1048             },
1049             'so' => {
1050             'kata' => 'ソ',
1051             'hira' => 'そ'
1052             },
1053             'do' => {
1054             'kata' => 'ド',
1055             'hira' => 'ど'
1056             },
1057             'su' => {
1058             'kata' => 'ス',
1059             'hira' => 'す'
1060             },
1061             'sho' => {
1062             'kata' => 'ショ',
1063             'hira' => 'しょ'
1064             },
1065             'du' => {
1066             'kata' => 'ドゥ',
1067             'hira' => 'どぅ'
1068             },
1069             'hyo' => {
1070             'kata' => 'ヒョ',
1071             'hira' => 'ひょ'
1072             },
1073             'cya' => {
1074             'kata' => 'チャ',
1075             'hira' => 'ちゃ'
1076             },
1077             'n\'' => {
1078             'kata' => 'ン',
1079             'hira' => 'ん'
1080             },
1081             'shu' => {
1082             'kata' => 'シュ',
1083             'hira' => 'しゅ'
1084             },
1085             'hyu' => {
1086             'kata' => 'ヒュ',
1087             'hira' => 'ひゅ'
1088             },
1089             'cye' => {
1090             'kata' => 'チェ',
1091             'hira' => 'ちぇ'
1092             },
1093             'pya' => {
1094             'kata' => 'ピャ',
1095             'hira' => 'ぴゃ'
1096             },
1097             'cyi' => {
1098             'kata' => 'チ',
1099             'hira' => 'ち'
1100             },
1101             'ta' => {
1102             'kata' => 'タ',
1103             'hira' => 'た'
1104             },
1105             'pye' => {
1106             'kata' => 'ピェ',
1107             'hira' => 'ぴぇ'
1108             },
1109             'te' => {
1110             'kata' => 'テ',
1111             'hira' => 'て'
1112             },
1113             'cyo' => {
1114             'kata' => 'チョ',
1115             'hira' => 'ちょ'
1116             },
1117             'ti' => {
1118             'kata' => 'チ',
1119             'hira' => 'ち'
1120             },
1121             'cyu' => {
1122             'kata' => 'チュ',
1123             'hira' => 'ちゅ'
1124             },
1125             'pyo' => {
1126             'kata' => 'ピョ',
1127             'hira' => 'ぴょ'
1128             },
1129             'kya' => {
1130             'kata' => 'キャ',
1131             'hira' => 'きゃ'
1132             },
1133             'to' => {
1134             'kata' => 'ト',
1135             'hira' => 'と'
1136             },
1137             'ma' => {
1138             'kata' => 'マ',
1139             'hira' => 'ま'
1140             },
1141             'pyu' => {
1142             'kata' => 'ピュ',
1143             'hira' => 'ぴゅ'
1144             },
1145             'kye' => {
1146             'kata' => 'キェ',
1147             'hira' => 'きぇ'
1148             },
1149             'tu' => {
1150             'kata' => 'ツ',
1151             'hira' => 'つ'
1152             },
1153             'xya' => {
1154             'kata' => 'ャ',
1155             'hira' => 'ゃ'
1156             },
1157             'me' => {
1158             'kata' => 'メ',
1159             'hira' => 'め'
1160             },
1161             'mi' => {
1162             'kata' => 'ミ',
1163             'hira' => 'み'
1164             },
1165             'kyo' => {
1166             'kata' => 'キョ',
1167             'hira' => 'きょ'
1168             },
1169             'mo' => {
1170             'kata' => 'モ',
1171             'hira' => 'も'
1172             },
1173             'fya' => {
1174             'kata' => 'フャ',
1175             'hira' => 'ふゃ'
1176             },
1177             'kyu' => {
1178             'kata' => 'キュ',
1179             'hira' => 'きゅ'
1180             },
1181             'fye' => {
1182             'kata' => 'フェ',
1183             'hira' => 'ふぇ'
1184             },
1185             'fa' => {
1186             'kata' => 'ファ',
1187             'hira' => 'ふぁ'
1188             },
1189             'xyo' => {
1190             'kata' => 'ョ',
1191             'hira' => 'ょ'
1192             },
1193             'mu' => {
1194             'kata' => 'ム',
1195             'hira' => 'む'
1196             },
1197             'sya' => {
1198             'kata' => 'シャ',
1199             'hira' => 'しゃ'
1200             },
1201             'fe' => {
1202             'kata' => 'フェ',
1203             'hira' => 'ふぇ'
1204             },
1205             'xyu' => {
1206             'kata' => 'ュ',
1207             'hira' => 'ゅ'
1208             },
1209             'sye' => {
1210             'kata' => 'シェ',
1211             'hira' => 'しぇ'
1212             },
1213             'fi' => {
1214             'kata' => 'フィ',
1215             'hira' => 'ふぃ'
1216             },
1217             'fyo' => {
1218             'kata' => 'フョ',
1219             'hira' => 'ふょ'
1220             },
1221             'syi' => {
1222             'kata' => 'シ',
1223             'hira' => 'し'
1224             }
1225             );
1226             %Lingua::JA::Romaji::allkana = (
1227             'キュ' => 'kyu',
1228             'ジェ' => 'je',
1229             'キョ' => 'kyo',
1230             'デャ' => 'dya',
1231             'デュ' => 'dyu',
1232             'ヒェ' => 'hye',
1233             'デョ' => 'dyo',
1234             'ヂャ' => 'dza',
1235             'ヂュ' => 'dju',
1236             'ヂョ' => 'dzo',
1237             'ギェ' => 'gye',
1238             'ぴゃ' => 'pya',
1239             'ぴゅ' => 'pyu',
1240             'みぇ' => 'mye',
1241             'ぴょ' => 'pyo',
1242             'ジャ' => 'ja',
1243             'ジュ' => 'ju',
1244             'ジョ' => 'jo',
1245             'ふぁ' => 'fa',
1246             'ヒャ' => 'hya',
1247             'ふぃ' => 'fi',
1248             'ヒュ' => 'hyu',
1249             'ヒョ' => 'hyo',
1250             'ふぇ' => 'fe',
1251             'ふぉ' => 'fo',
1252             'ッチ' => 'tchi',
1253             'ギャ' => 'gya',
1254             'ギュ' => 'gyu',
1255             'ギョ' => 'gyo',
1256             'みゃ' => 'mya',
1257             'みゅ' => 'myu',
1258             'りぇ' => 'rye',
1259             'ビェ' => 'bye',
1260             'みょ' => 'myo',
1261             'にぇ' => 'nye',
1262             'っちぇ' => 'tche',
1263             'ふゃ' => 'fya',
1264             'ドゥ' => 'du',
1265             'ふゅ' => 'fyu',
1266             'ふょ' => 'fyo',
1267             'ちぇ' => 'che',
1268             'ツァ' => 'tsa',
1269             'ツェ' => 'tse',
1270             'ツォ' => 'tso',
1271             'りゃ' => 'rya',
1272             'ビャ' => 'bya',
1273             'りゅ' => 'ryu',
1274             'にゃ' => 'nya',
1275             'ビュ' => 'byu',
1276             'りょ' => 'ryo',
1277             'にゅ' => 'nyu',
1278             'ビョ' => 'byo',
1279             'っちゃ' => 'tcha',
1280             'にょ' => 'nyo',
1281             'しぇ' => 'she',
1282             'っちゅ' => 'tchu',
1283             'っちょ' => 'tcho',
1284             'ちゃ' => 'cha',
1285             'ピェ' => 'pye',
1286             'ちゅ' => 'chu',
1287             'ちょ' => 'cho',
1288             'きぇ' => 'kye',
1289             'でぃ' => 'di',
1290             'でぇ' => 'dye',
1291             'しゃ' => 'sha',
1292             'しゅ' => 'shu',
1293             'ぢぇ' => 'dze',
1294             'しょ' => 'sho',
1295             '・' => '.',
1296             'ピャ' => 'pya',
1297             'ピュ' => 'pyu',
1298             'ミェ' => 'mye',
1299             'きゃ' => 'kya',
1300             'ー' => '-',
1301             'ピョ' => 'pyo',
1302             'きゅ' => 'kyu',
1303             'きょ' => 'kyo',
1304             'じぇ' => 'je',
1305             'でゃ' => 'dya',
1306             'でゅ' => 'dyu',
1307             'でょ' => 'dyo',
1308             'ひぇ' => 'hye',
1309             'ヴァ' => 'va',
1310             'ヴィ' => 'vi',
1311             'ヴぁ' => 'va',
1312             'ヴぃ' => 'vi',
1313             'ファ' => 'fa',
1314             'フィ' => 'fi',
1315             'ヴェ' => 've',
1316             'ヴぇ' => 've',
1317             'ぢゃ' => 'dza',
1318             'ヴォ' => 'vo',
1319             'ヴぉ' => 'vo',
1320             'フェ' => 'fe',
1321             'ぢゅ' => 'dju',
1322             'フォ' => 'fo',
1323             'ぢょ' => 'dzo',
1324             'ぎぇ' => 'gye',
1325             'ッチェ' => 'tche',
1326             'ミャ' => 'mya',
1327             'ミュ' => 'myu',
1328             'リェ' => 'rye',
1329             'ミョ' => 'myo',
1330             'じゃ' => 'ja',
1331             'ニェ' => 'nye',
1332             'じゅ' => 'ju',
1333             'じょ' => 'jo',
1334             'ぁ' => 'xa',
1335             'あ' => 'a',
1336             'ぃ' => 'xi',
1337             'い' => 'i',
1338             'ぅ' => 'xu',
1339             'う' => 'u',
1340             'ひゃ' => 'hya',
1341             'ぇ' => 'xe',
1342             'え' => 'e',
1343             'ひゅ' => 'hyu',
1344             'ぉ' => 'xo',
1345             'お' => 'o',
1346             'か' => 'ka',
1347             'ひょ' => 'hyo',
1348             'が' => 'ga',
1349             'き' => 'ki',
1350             'ぎ' => 'gi',
1351             'く' => 'ku',
1352             'ぐ' => 'gu',
1353             'け' => 'ke',
1354             'げ' => 'ge',
1355             'こ' => 'ko',
1356             'ご' => 'go',
1357             'さ' => 'sa',
1358             'フャ' => 'fya',
1359             'っち' => 'tchi',
1360             'ざ' => 'za',
1361             'し' => 'shi',
1362             'フュ' => 'fyu',
1363             'じ' => 'ji',
1364             'す' => 'su',
1365             'ぎゃ' => 'gya',
1366             'フョ' => 'fyo',
1367             'ず' => 'zu',
1368             'せ' => 'se',
1369             'ぎゅ' => 'gyu',
1370             'チェ' => 'che',
1371             'ぜ' => 'ze',
1372             'ぎょ' => 'gyo',
1373             'そ' => 'so',
1374             'ぞ' => 'zo',
1375             'た' => 'ta',
1376             'だ' => 'da',
1377             'ッチャ' => 'tcha',
1378             'ち' => 'chi',
1379             'ぢ' => 'dzi',
1380             'ァ' => 'xa',
1381             'ッチュ' => 'tchu',
1382             'っ' => '*',
1383             'ア' => 'a',
1384             'つ' => 'tsu',
1385             'ィ' => 'xi',
1386             'ッチョ' => 'tcho',
1387             'づ' => 'dzu',
1388             'イ' => 'i',
1389             'て' => 'te',
1390             'ゥ' => 'xu',
1391             'で' => 'de',
1392             'ウ' => 'u',
1393             'と' => 'to',
1394             'ェ' => 'xe',
1395             'ど' => 'do',
1396             'エ' => 'e',
1397             'な' => 'na',
1398             'ォ' => 'xo',
1399             'びぇ' => 'bye',
1400             'に' => 'ni',
1401             'オ' => 'o',
1402             'ぬ' => 'nu',
1403             'カ' => 'ka',
1404             'ね' => 'ne',
1405             'ガ' => 'ga',
1406             'の' => 'no',
1407             'キ' => 'ki',
1408             'は' => 'ha',
1409             'ギ' => 'gi',
1410             'ば' => 'ba',
1411             'ク' => 'ku',
1412             'ぱ' => 'pa',
1413             'グ' => 'gu',
1414             'ひ' => 'hi',
1415             'ケ' => 'ke',
1416             'び' => 'bi',
1417             'ゲ' => 'ge',
1418             'リャ' => 'rya',
1419             'ぴ' => 'pi',
1420             'コ' => 'ko',
1421             'ふ' => 'fu',
1422             'ゴ' => 'go',
1423             'リュ' => 'ryu',
1424             'ぶ' => 'bu',
1425             'サ' => 'sa',
1426             'ニャ' => 'nya',
1427             'ぷ' => 'pu',
1428             'ザ' => 'za',
1429             'リョ' => 'ryo',
1430             'へ' => 'he',
1431             'シ' => 'shi',
1432             'ニュ' => 'nyu',
1433             'べ' => 'be',
1434             'ジ' => 'ji',
1435             'ぺ' => 'pe',
1436             'ス' => 'su',
1437             'ニョ' => 'nyo',
1438             'ほ' => 'ho',
1439             'ズ' => 'zu',
1440             'シェ' => 'she',
1441             'ぼ' => 'bo',
1442             'セ' => 'se',
1443             'ぽ' => 'po',
1444             'ゼ' => 'ze',
1445             'ま' => 'ma',
1446             'ソ' => 'so',
1447             'み' => 'mi',
1448             'ゾ' => 'zo',
1449             'む' => 'mu',
1450             'タ' => 'ta',
1451             'め' => 'me',
1452             'ダ' => 'da',
1453             'も' => 'mo',
1454             'チ' => 'chi',
1455             'ゃ' => 'xya',
1456             'ヂ' => 'dzi',
1457             'や' => 'ya',
1458             'ッ' => '*',
1459             'ゅ' => 'xyu',
1460             'ツ' => 'tsu',
1461             'ゆ' => 'yu',
1462             'ヅ' => 'dzu',
1463             'ょ' => 'xyo',
1464             'テ' => 'te',
1465             'よ' => 'yo',
1466             'デ' => 'de',
1467             'どぅ' => 'du',
1468             'ら' => 'ra',
1469             'ト' => 'to',
1470             'り' => 'ri',
1471             'ド' => 'do',
1472             'る' => 'ru',
1473             'ナ' => 'na',
1474             'れ' => 're',
1475             'ニ' => 'ni',
1476             'ろ' => 'ro',
1477             'ヌ' => 'nu',
1478             'ゎ' => 'xwa',
1479             'ネ' => 'ne',
1480             'わ' => 'wa',
1481             'ノ' => 'no',
1482             'ゐ' => 'wi',
1483             'ハ' => 'ha',
1484             'ゑ' => 'we',
1485             'バ' => 'ba',
1486             'を' => 'wo',
1487             'パ' => 'pa',
1488             'ん' => 'n\'',
1489             'ヒ' => 'hi',
1490             'ビ' => 'bi',
1491             'ピ' => 'pi',
1492             'フ' => 'fu',
1493             'つぁ' => 'tsa',
1494             'ブ' => 'bu',
1495             'チャ' => 'cha',
1496             'プ' => 'pu',
1497             'ヘ' => 'he',
1498             'チュ' => 'chu',
1499             'ベ' => 'be',
1500             'ペ' => 'pe',
1501             'チョ' => 'cho',
1502             'つぇ' => 'tse',
1503             'キェ' => 'kye',
1504             'ホ' => 'ho',
1505             'ボ' => 'bo',
1506             'つぉ' => 'tso',
1507             'ポ' => 'po',
1508             'マ' => 'ma',
1509             'ミ' => 'mi',
1510             'ム' => 'mu',
1511             'メ' => 'me',
1512             'モ' => 'mo',
1513             'ャ' => 'xya',
1514             'ヤ' => 'ya',
1515             'ュ' => 'xyu',
1516             'びゃ' => 'bya',
1517             'ディ' => 'di',
1518             'ユ' => 'yu',
1519             'ョ' => 'xyo',
1520             'ヨ' => 'yo',
1521             'びゅ' => 'byu',
1522             'ラ' => 'ra',
1523             'デェ' => 'dye',
1524             'リ' => 'ri',
1525             'びょ' => 'byo',
1526             'ル' => 'ru',
1527             'レ' => 're',
1528             'ロ' => 'ro',
1529             'ヮ' => 'xwa',
1530             'ワ' => 'wa',
1531             'ヰ' => 'wi',
1532             'ヱ' => 'we',
1533             'ヲ' => 'wo',
1534             'ン' => 'n\'',
1535             'ヴ' => 'vu',
1536             'ヵ' => 'xka',
1537             'ヶ' => 'xke',
1538             'シャ' => 'sha',
1539             'シュ' => 'shu',
1540             'ヂェ' => 'dze',
1541             'ショ' => 'sho',
1542             'ぴぇ' => 'pye',
1543             'キャ' => 'kya'
1544             );
1545              
1546              
1547             1;
1548             __END__