gen-arabic-table.py revision 3eb936f1539475098f39be78654b9c39b86f0799
13eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod#!/usr/bin/python 23eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod 33eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbodimport sys 43eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod 53eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbodheader = sys.stdin.readline(), sys.stdin.readline() 63eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahboddic = dict() 73eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbodfor line in sys.stdin: 83eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod if line[:1] != '0': 93eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod continue 103eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod 113eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod fields = [x.strip() for x in line.split(';')] 123eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod u = int(fields[0], 16) 133eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod 143eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod if u < 0x0600 or (u > 0x07FF and u != 0x200C and u != 0x200D): 153eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod raise Exception ("Ooops, unexpected unicode character: ", fields) 163eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod dic[u] = fields 173eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod 183eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbodprint " /*" 193eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbodprint " * The following table is generated by running:" 203eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbodprint " *" 213eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbodprint " * ./gen-arabic-joining-table.py < ArabicShaping.txt" 223eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbodprint " *" 233eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbodprint " * on the ArabicShaping.txt file with the header:" 243eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbodprint " *" 253eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbodfor line in header: 263eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod print " * %s" % (line.strip()) 273eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbodprint " */" 283eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbodprint " /* == Start of generated table == */" 293eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbodfor i in range(0x0600, 0x0800): 303eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod if i not in dic: 313eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod print " JOINING_TYPE_X, /* %04X */" % i 323eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod else: 333eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod entry = dic[i] 343eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod if entry[3] in ["ALAPH", "DALATH RISH"]: 353eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod value = "JOINING_GROUP_" + entry[3].replace(' ', '_') 363eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod else: 373eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod value = "JOINING_TYPE_" + entry[2] 383eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbod print " %s, /* %s */" % (value, '; '.join(entry)) 393eb936f1539475098f39be78654b9c39b86f0799Behdad Esfahbodprint " /* == End of generated table == */" 40