| #!/usr/bin/env python |
| |
| # Copyright (C) 2015 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the 'License'); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an 'AS IS' BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| """Generate case mappings from German pattern files.""" |
| |
| import codecs |
| |
| for locale in ['de-1901', 'de-1996', 'de-ch-1901']: |
| all_chars = set() |
| with codecs.open('hyph-%s.pat.txt' % locale, 'r', 'UTF-8') as pat_file: |
| for line in pat_file: |
| line = line.strip() |
| all_chars |= set(line) |
| all_chars.remove('.') |
| all_chars -= set('0123456789') |
| |
| with codecs.open('hyph-%s.chr.txt' % locale, 'w', 'UTF-8') as chr_file: |
| for c in sorted(all_chars): |
| # Since Android uses the chr files to map uppercase to lowercase, |
| # map lowercase sharp s to uppercase sharp s instead of SS. |
| uppercase = u'\u1E9E' if c == u'\u00DF' else c.upper() |
| chr_file.write('%s%s\n' % (c, uppercase)) |
| |