[merge] Minor cleanup
diff --git a/Lib/fontTools/merge.py b/Lib/fontTools/merge.py
index 03c066d..6e3fd89 100644
--- a/Lib/fontTools/merge.py
+++ b/Lib/fontTools/merge.py
@@ -12,6 +12,7 @@
from functools import reduce
import sys
import time
+import operator
def _add_method(*clazzes):
@@ -28,26 +29,24 @@
return wrapper
# General utility functions for merging values from different fonts
-def assert_equal(lst):
- first = lst[0]
- assert all([item == first for item in lst])
+def equal(lst):
+ t = iter(lst)
+ first = next(t)
+ assert all(item == first for item in t)
return first
def first(lst):
- return lst[0]
+ return next(iter(lst))
def recalculate(lst):
# Just return the first value, assume will be recalculated when saved
- return lst[0]
+ return first(lst)
def current_time(lst):
- return long(time.time() - _h_e_a_d.mac_epoch_diff)
+ return int(time.time() - _h_e_a_d.mac_epoch_diff)
def bitwise_or(lst):
- ret = 0
- for item in lst:
- ret |= item
- return ret
+ return reduce(operator.or_, lst)
def ignore(lst):
assert False, "This function should not be called."
@@ -56,7 +55,7 @@
def merge(self, m):
logic = {
'*': max,
- 'tableVersion': assert_equal,
+ 'tableVersion': equal,
'numGlyphs': sum,
'maxStorage': max, # FIXME: may need to be changed to sum
'maxFunctionDefs': sum,
@@ -73,9 +72,9 @@
'tableVersion': max,
'fontRevision': max,
'checkSumAdjustment': recalculate,
- 'magicNumber': assert_equal,
+ 'magicNumber': equal,
'flags': first, # FIXME: replace with bit-sensitive code
- 'unitsPerEm': assert_equal,
+ 'unitsPerEm': equal,
'created': current_time,
'modified': current_time,
'xMin': min,
@@ -86,7 +85,7 @@
'lowestRecPPEM': max,
'fontDirectionHint': lambda lst: 2,
'indexToLocFormat': recalculate,
- 'glyphDataFormat': assert_equal,
+ 'glyphDataFormat': equal,
}
m._mergeKeys(self, logic)
return True
@@ -94,7 +93,7 @@
@_add_method(ttLib.getTableClass('hhea'))
def merge(self, m):
logic = {
- '*': assert_equal,
+ '*': equal,
'tableVersion': max,
'ascent': max,
'descent': min,
@@ -427,7 +426,7 @@
return mega
def _mergeKeys(self, return_table, logic):
- logic['tableTag'] = assert_equal
+ logic['tableTag'] = equal
allKeys = set.union(set(), *(vars(table).keys() for table in self.tables))
for key in allKeys:
try: