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