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