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