aboutsummaryrefslogtreecommitdiffstats
path: root/libwc/map/mk_ucs_isdigit_map.pl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--libwc/map/mk_ucs_isdigit_map.pl56
1 files changed, 56 insertions, 0 deletions
diff --git a/libwc/map/mk_ucs_isdigit_map.pl b/libwc/map/mk_ucs_isdigit_map.pl
new file mode 100644
index 0000000..c67f645
--- /dev/null
+++ b/libwc/map/mk_ucs_isdigit_map.pl
@@ -0,0 +1,56 @@
+
+open(MAP, "> ucs_isdigit.map");
+print MAP <<EOF;
+/*
+ File generated from UnicodeData-4.1.0.txt.
+*/
+
+EOF
+
+for (<DATA>) {
+ chop;
+ ($name, $class) = split;
+
+ @cp = ();
+
+ open(UCD, "< private/UnicodeData-4.1.0.txt");
+ while(<UCD>) {
+ chop;
+ @entry = split(';');
+ last if $entry[0] =~ m/.{5,}/;
+ if ($entry[2] eq $class) {
+ push (@cp, $entry[0]);
+ }
+ }
+ close UCD;
+
+ @bs = ();
+ $last = -1;
+ $seq = -1;
+ for my $e (@cp) {
+ if (++$last != hex $e) {
+ $seq = $e;
+ $last = hex $e;
+ push (@bs, $seq);
+ }
+ $end{$seq} = $e;
+ }
+ $nobs = @bs;
+
+ print MAP <<EOF;
+
+#define N_ucs_${name}_map ${nobs}
+
+static wc_map ucs_${name}_map[ N_ucs_${name}_map ] = {
+EOF
+
+ for (@bs) {
+ print MAP " { 0x$_, 0x$end{$_} },\n";
+ }
+ print MAP <<EOF
+};
+EOF
+}
+
+__END__
+isdigit Nd