switch unfcmb.h to employ 'STDCHAR' in place of char
[p5sagit/p5-mst-13.2.git] / ext / Unicode / Normalize / Normalize.pm
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__