| 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__ |