[gen-ucd] Protect against accidents like previous commit
authorBehdad Esfahbod <behdad@behdad.org>
Wed, 26 Jun 2019 02:07:07 +0000 (19:07 -0700)
committerBehdad Esfahbod <behdad@behdad.org>
Wed, 26 Jun 2019 02:07:07 +0000 (19:07 -0700)
https://github.com/harfbuzz/harfbuzz/pull/1796

src/gen-ucd-table.py

index 1afde3b..a152375 100755 (executable)
@@ -58,13 +58,14 @@ dm_order = {None: 0}
 dm_order.update(dm1_order)
 dm_order.update(dm2_order)
 
-gc_order = packTab.AutoMapping()
-for _ in ('Cc', 'Cf', 'Cn', 'Co', 'Cs', 'Ll', 'Lm', 'Lo', 'Lt', 'Lu',
-          'Mc', 'Me', 'Mn', 'Nd', 'Nl', 'No', 'Pc', 'Pd', 'Pe', 'Pf',
-          'Pi', 'Po', 'Ps', 'Sc', 'Sk', 'Sm', 'So', 'Zl', 'Zp', 'Zs',):
-    gc_order[_]
-
-sc_order = packTab.AutoMapping()
+gc_order = dict()
+for i,v in enumerate(('Cc', 'Cf', 'Cn', 'Co', 'Cs', 'Ll', 'Lm', 'Lo', 'Lt', 'Lu',
+                      'Mc', 'Me', 'Mn', 'Nd', 'Nl', 'No', 'Pc', 'Pd', 'Pe', 'Pf',
+                      'Pi', 'Po', 'Ps', 'Sc', 'Sk', 'Sm', 'So', 'Zl', 'Zp', 'Zs',)):
+    gc_order[i] = v
+    gc_order[v] = i
+
+sc_order = dict()
 sc_array = []
 sc_re = re.compile(r"\b(HB_SCRIPT_[_A-Z]*).*HB_TAG [(]'(.)','(.)','(.)','(.)'[)]")
 for line in open('hb-common.h'):
@@ -72,14 +73,11 @@ for line in open('hb-common.h'):
     if not m: continue
     name = m.group(1)
     tag = ''.join(m.group(i) for i in range(2, 6))
-    i = sc_order[tag]
-    assert i == len(sc_array)
+    i = len(sc_array)
+    sc_order[tag] = i
+    sc_order[i] = tag
     sc_array.append(name)
 
-# TODO Currently if gc_order or sc_order do not capture all values, we get in
-# trouble because they silently add new values.  We should be able to "freeze"
-# them, or just do the mapping ourselves.
-
 DEFAULT = 1
 COMPACT = 3
 SLOPPY  = 5