filenames.py: fix doctests for py2.py3; import unicode_literals

This commit is contained in:
Cosimo Lupo 2016-09-11 16:48:40 +01:00
parent ee38446982
commit 8747da76a4

View File

@ -2,6 +2,7 @@
User name to file name conversion.
This was taken form the UFO 3 spec.
"""
from __future__ import unicode_literals
from fontTools.misc.py23 import basestring, unicode
@ -22,50 +23,50 @@ def userNameToFileName(userName, existing=[], prefix="", suffix=""):
existing should be a case-insensitive list
of all existing file names.
>>> userNameToFileName(u"a")
u'a'
>>> userNameToFileName(u"A")
u'A_'
>>> userNameToFileName(u"AE")
u'A_E_'
>>> userNameToFileName(u"Ae")
u'A_e'
>>> userNameToFileName(u"ae")
u'ae'
>>> userNameToFileName(u"aE")
u'aE_'
>>> userNameToFileName(u"a.alt")
u'a.alt'
>>> userNameToFileName(u"A.alt")
u'A_.alt'
>>> userNameToFileName(u"A.Alt")
u'A_.A_lt'
>>> userNameToFileName(u"A.aLt")
u'A_.aL_t'
>>> userNameToFileName(u"A.alT")
u'A_.alT_'
>>> userNameToFileName(u"T_H")
u'T__H_'
>>> userNameToFileName(u"T_h")
u'T__h'
>>> userNameToFileName(u"t_h")
u't_h'
>>> userNameToFileName(u"F_F_I")
u'F__F__I_'
>>> userNameToFileName(u"f_f_i")
u'f_f_i'
>>> userNameToFileName(u"Aacute_V.swash")
u'A_acute_V_.swash'
>>> userNameToFileName(u".notdef")
u'_notdef'
>>> userNameToFileName(u"con")
u'_con'
>>> userNameToFileName(u"CON")
u'C_O_N_'
>>> userNameToFileName(u"con.alt")
u'_con.alt'
>>> userNameToFileName(u"alt.con")
u'alt._con'
>>> userNameToFileName("a") == "a"
True
>>> userNameToFileName("A") == "A_"
True
>>> userNameToFileName("AE") == "A_E_"
True
>>> userNameToFileName("Ae") == "A_e"
True
>>> userNameToFileName("ae") == "ae"
True
>>> userNameToFileName("aE") == "aE_"
True
>>> userNameToFileName("a.alt") == "a.alt"
True
>>> userNameToFileName("A.alt") == "A_.alt"
True
>>> userNameToFileName("A.Alt") == "A_.A_lt"
True
>>> userNameToFileName("A.aLt") == "A_.aL_t"
True
>>> userNameToFileName(u"A.alT") == "A_.alT_"
True
>>> userNameToFileName("T_H") == "T__H_"
True
>>> userNameToFileName("T_h") == "T__h"
True
>>> userNameToFileName("t_h") == "t_h"
True
>>> userNameToFileName("F_F_I") == "F__F__I_"
True
>>> userNameToFileName("f_f_i") == "f_f_i"
True
>>> userNameToFileName("Aacute_V.swash") == "A_acute_V_.swash"
True
>>> userNameToFileName(".notdef") == "_notdef"
True
>>> userNameToFileName("con") == "_con"
True
>>> userNameToFileName("CON") == "C_O_N_"
True
>>> userNameToFileName("con.alt") == "_con.alt"
True
>>> userNameToFileName("alt.con") == "alt._con"
True
"""
# the incoming name must be a unicode string
if not isinstance(userName, unicode):
@ -116,20 +117,23 @@ def handleClash1(userName, existing=[], prefix="", suffix=""):
>>> e = list(existing)
>>> handleClash1(userName="A" * 5, existing=e,
... prefix=prefix, suffix=suffix)
'00000.AAAAA000000000000001.0000000000'
... prefix=prefix, suffix=suffix) == (
... '00000.AAAAA000000000000001.0000000000')
True
>>> e = list(existing)
>>> e.append(prefix + "aaaaa" + "1".zfill(15) + suffix)
>>> handleClash1(userName="A" * 5, existing=e,
... prefix=prefix, suffix=suffix)
'00000.AAAAA000000000000002.0000000000'
... prefix=prefix, suffix=suffix) == (
... '00000.AAAAA000000000000002.0000000000')
True
>>> e = list(existing)
>>> e.append(prefix + "AAAAA" + "2".zfill(15) + suffix)
>>> handleClash1(userName="A" * 5, existing=e,
... prefix=prefix, suffix=suffix)
'00000.AAAAA000000000000001.0000000000'
... prefix=prefix, suffix=suffix) == (
... '00000.AAAAA000000000000001.0000000000')
True
"""
# if the prefix length + user name length + suffix length + 15 is at
# or past the maximum length, silce 15 characters off of the user name
@ -168,18 +172,21 @@ def handleClash2(existing=[], prefix="", suffix=""):
>>> existing = [prefix + str(i) + suffix for i in range(100)]
>>> e = list(existing)
>>> handleClash2(existing=e, prefix=prefix, suffix=suffix)
'00000.100.0000000000'
>>> handleClash2(existing=e, prefix=prefix, suffix=suffix) == (
... '00000.100.0000000000')
True
>>> e = list(existing)
>>> e.remove(prefix + "1" + suffix)
>>> handleClash2(existing=e, prefix=prefix, suffix=suffix)
'00000.1.0000000000'
>>> handleClash2(existing=e, prefix=prefix, suffix=suffix) == (
... '00000.1.0000000000')
True
>>> e = list(existing)
>>> e.remove(prefix + "2" + suffix)
>>> handleClash2(existing=e, prefix=prefix, suffix=suffix)
'00000.2.0000000000'
>>> handleClash2(existing=e, prefix=prefix, suffix=suffix) == (
... '00000.2.0000000000')
True
"""
# calculate the longest possible string
maxLength = maxFileNameLength - len(prefix) - len(suffix)