py23 fixes for psOperators
diff --git a/Lib/fontTools/misc/psOperators.py b/Lib/fontTools/misc/psOperators.py
index 9fb3723..a67b239 100644
--- a/Lib/fontTools/misc/psOperators.py
+++ b/Lib/fontTools/misc/psOperators.py
@@ -1,3 +1,6 @@
+from __future__ import print_function, division
+from fontTools.misc.py23 import *
+
_accessstrings = {0: "", 1: "readonly", 2: "executeonly", 3: "noaccess"}
@@ -116,13 +119,12 @@
psstring = "/Encoding 256 array\n0 1 255 {1 index exch /.notdef put} for\n"
for i in range(256):
name = encoding[i].value
- if name <> '.notdef':
+ if name != '.notdef':
psstring = psstring + "dup %d /%s put\n" % (i, name)
return psstring + access + "def\n"
def _type1_CharString_repr(charstrings):
- items = charstrings.items()
- items.sort()
+ items = sorted(charstrings.items())
return 'xxx'
class ps_font(ps_object):
@@ -135,8 +137,7 @@
pass
else:
psstring = psstring + _type1_item_repr(key, value)
- items = self.value.items()
- items.sort()
+ items = sorted(self.value.items())
for key, value in items:
if key not in _type1_pre_eexec_order + _type1_post_eexec_order:
psstring = psstring + _type1_item_repr(key, value)
@@ -159,8 +160,7 @@
class ps_dict(ps_object):
def __str__(self):
psstring = "%d dict dup begin\n" % len(self.value)
- items = self.value.items()
- items.sort()
+ items = sorted(self.value.items())
dictrepr = "%d dict dup begin\n" % len(items)
for key, value in items:
access = _accessstrings[value.access]
@@ -194,15 +194,15 @@
class ps_string(ps_object):
def __str__(self):
- return "(%s)" % `self.value`[1:-1]
+ return "(%s)" % repr(self.value)[1:-1]
class ps_integer(ps_object):
def __str__(self):
- return `self.value`
+ return repr(self.value)
class ps_real(ps_object):
def __str__(self):
- return `self.value`
+ return repr(self.value)
class PSOperators:
@@ -234,7 +234,7 @@
def ps_exch(self):
if len(self.stack) < 2:
- raise RuntimeError, 'stack underflow'
+ raise RuntimeError('stack underflow')
obj1 = self.pop()
obj2 = self.pop()
self.push(obj1)
@@ -242,7 +242,7 @@
def ps_dup(self):
if not self.stack:
- raise RuntimeError, 'stack underflow'
+ raise RuntimeError('stack underflow')
self.push(self.stack[-1])
def ps_exec(self):
@@ -263,7 +263,7 @@
def ps_ne(self):
any1 = self.pop()
any2 = self.pop()
- self.push(ps_boolean(any1.value <> any2.value))
+ self.push(ps_boolean(any1.value != any2.value))
def ps_cvx(self):
obj = self.pop()
@@ -287,7 +287,7 @@
key = self.pop()
name = key.value
for i in range(len(self.dictstack)-1, -1, -1):
- if self.dictstack[i].has_key(name):
+ if name in self.dictstack[i]:
self.dictstack[i][name] = value
break
self.dictstack[-1][name] = value
@@ -320,7 +320,7 @@
def ps_cleartomark(self):
obj = self.pop()
- while obj <> self.mark:
+ while obj != self.mark:
obj = self.pop()
def ps_readstring(self,
@@ -340,7 +340,7 @@
def ps_known(self):
key = self.pop()
dict = self.pop('dicttype', 'fonttype')
- self.push(ps_boolean(dict.value.has_key(key.value)))
+ self.push(ps_boolean(key.value in dict.value))
def ps_if(self):
proc = self.pop('proceduretype')
@@ -384,7 +384,7 @@
def ps_print(self):
str = self.pop('stringtype')
- print 'PS output --->', str.value
+ print('PS output --->', str.value)
def ps_anchorsearch(self):
seek = self.pop('stringtype')
@@ -472,7 +472,7 @@
def ps_index(self):
n = self.pop('integertype').value
if n < 0:
- raise RuntimeError, 'index may not be negative'
+ raise RuntimeError('index may not be negative')
self.push(self.stack[-1-n])
def ps_for(self):
@@ -540,9 +540,9 @@
if len(self.dictstack) > 2:
del self.dictstack[-1]
else:
- raise RuntimeError, 'dictstack underflow'
+ raise RuntimeError('dictstack underflow')
notdef = '.notdef'
from fontTools.encodings.StandardEncoding import StandardEncoding
-ps_StandardEncoding = map(ps_name, StandardEncoding)
+ps_StandardEncoding = list(map(ps_name, StandardEncoding))