1e0d0090e76075a983d42aedad1c4fc2e77db847cAndrew M. Kuchling"""Constants and membership tests for ASCII characters""" 22b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling 3bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumNUL = 0x00 # ^@ 4bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumSOH = 0x01 # ^A 5bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumSTX = 0x02 # ^B 6bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumETX = 0x03 # ^C 7bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumEOT = 0x04 # ^D 8bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumENQ = 0x05 # ^E 9bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumACK = 0x06 # ^F 10bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumBEL = 0x07 # ^G 11bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumBS = 0x08 # ^H 12bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumTAB = 0x09 # ^I 13bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumHT = 0x09 # ^I 14bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumLF = 0x0a # ^J 15bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumNL = 0x0a # ^J 16bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumVT = 0x0b # ^K 17bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumFF = 0x0c # ^L 18bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumCR = 0x0d # ^M 19bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumSO = 0x0e # ^N 20bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumSI = 0x0f # ^O 21bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumDLE = 0x10 # ^P 22bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumDC1 = 0x11 # ^Q 23bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumDC2 = 0x12 # ^R 24bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumDC3 = 0x13 # ^S 25bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumDC4 = 0x14 # ^T 26bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumNAK = 0x15 # ^U 27bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumSYN = 0x16 # ^V 28bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumETB = 0x17 # ^W 29bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumCAN = 0x18 # ^X 30bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumEM = 0x19 # ^Y 31bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumSUB = 0x1a # ^Z 32bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumESC = 0x1b # ^[ 33bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumFS = 0x1c # ^\ 34bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumGS = 0x1d # ^] 35bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumRS = 0x1e # ^^ 36bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumUS = 0x1f # ^_ 37bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumSP = 0x20 # space 38bffa52f07fc73b3c8eb4b30e30e2417bc406d2eeGuido van RossumDEL = 0x7f # delete 392b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling 402b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchlingcontrolnames = [ 412b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling"NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL", 422b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling"BS", "HT", "LF", "VT", "FF", "CR", "SO", "SI", 432b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling"DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB", 442b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling"CAN", "EM", "SUB", "ESC", "FS", "GS", "RS", "US", 452b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling"SP" 462b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling] 472b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling 482b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchlingdef _ctoi(c): 492b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling if type(c) == type(""): 502b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling return ord(c) 512b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling else: 522b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling return c 532b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling 542b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchlingdef isalnum(c): return isalpha(c) or isdigit(c) 552b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchlingdef isalpha(c): return isupper(c) or islower(c) 56283de2b9c18e38c9a573526d6c398ade7dd6f8e9Serhiy Storchakadef isascii(c): return 0 <= _ctoi(c) <= 127 # ? 57514f9736a712923756cdd1d3a5e845bf3fdb0994Serhiy Storchakadef isblank(c): return _ctoi(c) in (9, 32) 58283de2b9c18e38c9a573526d6c398ade7dd6f8e9Serhiy Storchakadef iscntrl(c): return 0 <= _ctoi(c) <= 31 or _ctoi(c) == 127 59283de2b9c18e38c9a573526d6c398ade7dd6f8e9Serhiy Storchakadef isdigit(c): return 48 <= _ctoi(c) <= 57 60283de2b9c18e38c9a573526d6c398ade7dd6f8e9Serhiy Storchakadef isgraph(c): return 33 <= _ctoi(c) <= 126 61283de2b9c18e38c9a573526d6c398ade7dd6f8e9Serhiy Storchakadef islower(c): return 97 <= _ctoi(c) <= 122 62283de2b9c18e38c9a573526d6c398ade7dd6f8e9Serhiy Storchakadef isprint(c): return 32 <= _ctoi(c) <= 126 63514f9736a712923756cdd1d3a5e845bf3fdb0994Serhiy Storchakadef ispunct(c): return isgraph(c) and not isalnum(c) 640cc87f37b3d3f5ad7250de5b828ca60e981eab2fAndrew M. Kuchlingdef isspace(c): return _ctoi(c) in (9, 10, 11, 12, 13, 32) 65283de2b9c18e38c9a573526d6c398ade7dd6f8e9Serhiy Storchakadef isupper(c): return 65 <= _ctoi(c) <= 90 662b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchlingdef isxdigit(c): return isdigit(c) or \ 67283de2b9c18e38c9a573526d6c398ade7dd6f8e9Serhiy Storchaka (65 <= _ctoi(c) <= 70) or (97 <= _ctoi(c) <= 102) 68283de2b9c18e38c9a573526d6c398ade7dd6f8e9Serhiy Storchakadef isctrl(c): return 0 <= _ctoi(c) < 32 692b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchlingdef ismeta(c): return _ctoi(c) > 127 702b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling 712b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchlingdef ascii(c): 722b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling if type(c) == type(""): 732b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling return chr(_ctoi(c) & 0x7f) 742b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling else: 752b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling return _ctoi(c) & 0x7f 762b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling 772b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchlingdef ctrl(c): 782b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling if type(c) == type(""): 792b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling return chr(_ctoi(c) & 0x1f) 802b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling else: 812b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling return _ctoi(c) & 0x1f 822b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling 832b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchlingdef alt(c): 842b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling if type(c) == type(""): 852b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling return chr(_ctoi(c) | 0x80) 862b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling else: 872b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling return _ctoi(c) | 0x80 882b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling 892b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchlingdef unctrl(c): 902b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling bits = _ctoi(c) 912b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling if bits == 0x7f: 922b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling rep = "^?" 93b738041c5db7a04b71ed4c3c8128dabc935ad60bAndrew M. Kuchling elif isprint(bits & 0x7f): 94b738041c5db7a04b71ed4c3c8128dabc935ad60bAndrew M. Kuchling rep = chr(bits & 0x7f) 952b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling else: 962b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling rep = "^" + chr(((bits & 0x7f) | 0x20) + 0x20) 972b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling if bits & 0x80: 982b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling return "!" + rep 992b9d0bcf83a9e16563be9b088c2fb58ea015c742Andrew M. Kuchling return rep 100