File Coverage

blib/lib/Lingua/KO/Hangul/JamoCompatMapping.pm
Criterion Covered Total %
statement 10 10 100.0
branch n/a
condition n/a
subroutine 4 4 100.0
pod 0 1 0.0
total 14 15 93.3


line stmt bran cond sub pod time code
1 2     2   53837 use strict;
  2         6  
  2         78  
2 2     2   10 use warnings;
  2         4  
  2         131  
3             package Lingua::KO::Hangul::JamoCompatMapping;
4             {
5             $Lingua::KO::Hangul::JamoCompatMapping::VERSION = '0.004';
6             }
7              
8             # ABSTRACT: provide a function that maps Hangul Jamo into Hangul Compatibility code
9              
10              
11 2     2   9 use Exporter;
  2         12  
  2         1457  
12             our @ISA = qw/Exporter/;
13             our @EXPORT = ();
14             our @EXPORT_OK = qw/%onset_to_compat %nucleus_to_compat %coda_to_compat %jamo_to_compat jamo_to_compat/;
15              
16             # onset
17             my %onset_to_compat = (
18             "\x{1100}" => "\x{3131}", #ㄱ
19             "\x{1101}" => "\x{3132}", #ㄲ
20             "\x{1102}" => "\x{3134}", #ㄴ
21             "\x{1103}" => "\x{3137}", #ㄷ
22             "\x{1104}" => "\x{3138}", #ㄸ
23             "\x{1105}" => "\x{3139}", #ㄹ
24             "\x{1106}" => "\x{3141}", #ㅁ
25             "\x{1107}" => "\x{3142}", #ㅂ
26             "\x{1108}" => "\x{3143}", #ㅃ
27             "\x{1109}" => "\x{3145}", #ㅅ
28             "\x{110A}" => "\x{3146}", #ㅆ
29             "\x{110B}" => "\x{3147}", #ㅇ
30             "\x{110C}" => "\x{3148}", #ㅈ
31             "\x{110D}" => "\x{3149}", #ㅉ
32             "\x{110E}" => "\x{314A}", #ㅊ
33             "\x{110F}" => "\x{314B}", #ㅋ
34              
35             "\x{1110}" => "\x{314C}", #ㅌ
36             "\x{1111}" => "\x{314D}", #ㅍ
37             "\x{1112}" => "\x{314E}", #ㅎ
38             );
39              
40             # nucleus
41             my %nucleus_to_compat = map { chr($_) => chr($_ + 0x1FEE) } ( 0x1161 .. 0x1175 );
42              
43             # coda
44             my %coda_to_compat = (
45             "\x{11A8}" => "\x{3131}", # ㄱ
46             "\x{11A9}" => "\x{3132}", # ㄲ
47             "\x{11AA}" => "\x{3133}", # ᆨᆺ
48             "\x{11AB}" => "\x{3134}", # ㄴ
49             "\x{11AC}" => "\x{3135}", # ᆫᆽ
50             "\x{11AD}" => "\x{3136}", # ᆫᇂ
51             "\x{11AE}" => "\x{3137}", # ㄷ
52             "\x{11AF}" => "\x{3139}", # ㄹ
53            
54             "\x{11B0}" => "\x{313A}", # ᆯᆨ
55             "\x{11B1}" => "\x{313B}", # ᆯᆷ
56             "\x{11B2}" => "\x{313C}", # ᆯᆸ
57             "\x{11B3}" => "\x{313D}", # ᆯㅅ
58             "\x{11B4}" => "\x{313E}", # ᆯᇀ
59             "\x{11B5}" => "\x{313F}", # ᆯᇁ
60             "\x{11B6}" => "\x{3140}", # ᆯᇂ
61             "\x{11B7}" => "\x{3141}", # ᆷ
62             "\x{11B8}" => "\x{3142}", # ᆸ
63             "\x{11B9}" => "\x{3144}", # ᆸᆺ
64             "\x{11BA}" => "\x{3145}", # ᆺ
65             "\x{11BB}" => "\x{3146}", # ᆻ
66             "\x{11BC}" => "\x{3147}", # ᆼ
67             "\x{11BD}" => "\x{3148}", # ᆽ
68             "\x{11BE}" => "\x{314A}", # ᆾ
69             "\x{11BF}" => "\x{314B}", # ᆿ
70            
71             "\x{11C0}" => "\x{314C}", # ᇀ
72             "\x{11C1}" => "\x{314D}", # ᇁ
73             "\x{11C2}" => "\x{314E}", # ᇂ
74             );
75              
76             # full set
77             my %jamo_to_compat = ( %onset_to_compat, %nucleus_to_compat, %coda_to_compat );
78              
79              
80             sub jamo_to_compat {
81 8     8 0 2173 return $jamo_to_compat{$_[0]};
82             }
83              
84             1;
85              
86             __END__