source: trunk/third/glib2/tests/gen-casefold-txt.pl @ 18159

Revision 18159, 2.1 KB checked in by ghudson, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r18158, which included commits to RCS files with non-trunk default branches.
  • Property svn:executable set to *
Line 
1#! /usr/bin/perl -w
2
3#    Copyright (C) 1998, 1999 Tom Tromey
4#    Copyright (C) 2001 Red Hat Software
5
6#    This program is free software; you can redistribute it and/or modify
7#    it under the terms of the GNU General Public License as published by
8#    the Free Software Foundation; either version 2, or (at your option)
9#    any later version.
10
11#    This program is distributed in the hope that it will be useful,
12#    but WITHOUT ANY WARRANTY; without even the implied warranty of
13#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14#    GNU General Public License for more details.
15
16#    You should have received a copy of the GNU General Public License
17#    along with this program; if not, write to the Free Software
18#    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19#    02111-1307, USA.
20
21# gen-casefold-test.pl - Generate test cases for casefolding from Unicode data.
22# See http://www.unicode.org/Public/UNIDATA/UnicodeCharacterDatabase.html
23# Usage:
24# I consider the output of this program to be unrestricted.  Use it as
25# you will.
26
27# Names of fields in the CaseFolding table
28$FOLDING_CODE = 0;
29$FOLDING_STATUS = 1;
30$FOLDING_MAPPING = 2;
31
32my $casefoldlen = 0;
33my @casefold;
34
35if (@ARGV != 2) {
36    $0 =~ s@.*/@@;
37    die "Usage: $0 UNICODE-VERSION  CaseFolding.txt\n";
38}
39 
40print <<EOT;
41# Test cases generated from Unicode $ARGV[0] data
42# by gen-casefold-test.pl. Do not edit.
43#
44# Some special hand crafted tests
45#
46AaBbCc@@\taabbcc@@
47#
48# Now the automatic tests
49#
50EOT
51
52open (INPUT, "< $ARGV[1]") || exit 1;
53
54while (<INPUT>)
55{
56    chop;
57
58    next if /^#/;
59    next if /^\s*$/;
60
61    s/\s*#.*//;
62
63    my @fields = split ('\s*;\s*', $_, 30);
64
65    my $raw_code = $fields[$FOLDING_CODE];
66    my $code = hex ($raw_code);
67
68    next if $code > 0xffff;     # FIXME!
69   
70    if ($#fields != 3)
71    {
72        printf STDERR ("Entry for $raw_code has wrong number of fields (%d)\n", $#fields);
73        next;
74    }
75
76    next if ($fields[$FOLDING_STATUS] eq 'S');
77
78    @values = map { hex ($_) } split /\s+/, $fields[$FOLDING_MAPPING];
79    printf ("%s\t%s\n", pack ("U", $code), pack ("U*", @values));
80}
81
82close INPUT;
Note: See TracBrowser for help on using the repository browser.