aboutsummaryrefslogtreecommitdiffstats
path: root/libwc/map/mk_ucs_case_map.pl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--libwc/map/mk_ucs_case_map.pl48
1 files changed, 48 insertions, 0 deletions
diff --git a/libwc/map/mk_ucs_case_map.pl b/libwc/map/mk_ucs_case_map.pl
new file mode 100644
index 0000000..ee48826
--- /dev/null
+++ b/libwc/map/mk_ucs_case_map.pl
@@ -0,0 +1,48 @@
+
+open(MAP, "> ucs_case.map");
+print MAP <<EOF;
+/*
+ File generated from UnicodeData-4.1.0.txt.
+*/
+
+EOF
+
+for (<DATA>) {
+ chop;
+ ($name, $col) = split;
+
+ @cp = ();
+
+ open(UCD, "< private/UnicodeData-4.1.0.txt");
+ while(<UCD>) {
+ chop;
+ @entry = split(';');
+ last if $entry[0] =~ m/.{5,}/;
+ if ($entry[$col] ne '') {
+ push (@cp, $entry[0]);
+ $map{$entry[0]} = $entry[$col];
+ }
+ }
+ close UCD;
+
+ $nocp = @cp;
+
+ print MAP <<EOF;
+
+#define N_ucs_${name}_map ${nocp}
+
+static wc_map ucs_${name}_map[ N_ucs_${name}_map ] = {
+EOF
+
+ for (@cp) {
+ print MAP " { 0x$_, 0x$map{$_} },\n";
+ }
+ print MAP <<EOF
+};
+EOF
+}
+
+__END__
+toupper 12
+tolower 13
+totitle 14