Commit | Line | Data |
ac5ea531 |
1 | package Unicode::Normalize; |
2 | |
3 | use 5.006; |
4 | use strict; |
5 | use warnings; |
6 | use Carp; |
7 | |
8 | our $VERSION = '0.10'; |
9 | our $PACKAGE = __PACKAGE__; |
10 | |
11 | require Exporter; |
12 | require DynaLoader; |
13 | require AutoLoader; |
14 | |
15 | our @ISA = qw(Exporter DynaLoader); |
16 | our @EXPORT = qw( NFC NFD NFKC NFKD ); |
17 | our @EXPORT_OK = qw( normalize decompose reorder compose |
18 | getCanon getCompat getComposite getCombinClass getExclusion); |
19 | our %EXPORT_TAGS = ( all => [ @EXPORT, @EXPORT_OK ] ); |
20 | |
21 | bootstrap Unicode::Normalize $VERSION; |
22 | |
23 | use constant CANON => 0; |
24 | use constant COMPAT => 1; |
25 | |
26 | sub NFD ($) { reorder(decompose($_[0], CANON)) } |
27 | |
28 | sub NFKD ($) { reorder(decompose($_[0], COMPAT)) } |
29 | |
30 | sub NFC ($) { compose(reorder(decompose($_[0], CANON))) } |
31 | |
32 | sub NFKC ($) { compose(reorder(decompose($_[0], COMPAT))) } |
33 | |
34 | sub normalize($$) |
35 | { |
36 | my $form = shift; |
37 | $form eq 'D' || $form eq 'NFD' ? NFD ($_[0]) : |
38 | $form eq 'C' || $form eq 'NFC' ? NFC ($_[0]) : |
39 | $form eq 'KD' || $form eq 'NFKD' ? NFKD($_[0]) : |
40 | $form eq 'KC' || $form eq 'NFKC' ? NFKC($_[0]) : |
41 | croak $PACKAGE."::normalize: invalid form name: $form"; |
42 | } |
43 | |
44 | 1; |
45 | __END__ |