| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- """
- Control character sets for terminal handling.
- This module provides the control character sets used by the width() function to handle terminal
- control characters.
- """
- # Illegal C0/C1 control characters.
- # These raise ValueError in 'strict' mode.
- ILLEGAL_CTRL = frozenset(
- chr(c) for c in (
- list(range(0x01, 0x07)) + # SOH, STX, ETX (^C), EOT (^D), ENQ, ACK
- list(range(0x10, 0x1b)) + # DLE through SUB (^Z)
- list(range(0x1c, 0x20)) + # FS, GS, RS, US
- [0x7f] + # DEL
- list(range(0x80, 0xa0)) # C1 control characters
- )
- )
- # Vertical movement control characters.
- # These raise ValueError in 'strict' mode (indeterminate horizontal position).
- VERTICAL_CTRL = frozenset({
- '\x0a', # LF (line feed)
- '\x0b', # VT (vertical tab)
- '\x0c', # FF (form feed)
- })
- # Horizontal movement control characters.
- # These affect cursor position and are tracked in 'strict' and 'parse' modes.
- HORIZONTAL_CTRL = frozenset({
- '\x08', # BS (backspace) - cursor left 1
- '\x09', # HT (horizontal tab) - advance to next tab stop
- '\x0d', # CR (carriage return) - cursor to column 0
- })
- # Terminal-valid zero-width control characters.
- # These are allowed in all modes (zero-width, no movement).
- ZERO_WIDTH_CTRL = frozenset({
- '\x00', # NUL
- '\x07', # BEL (bell)
- '\x0e', # SO (shift out)
- '\x0f', # SI (shift in)
- })
- # All control characters that need special handling (not regular printable).
- ALL_CTRL = ILLEGAL_CTRL | VERTICAL_CTRL | HORIZONTAL_CTRL | ZERO_WIDTH_CTRL | {'\x1b'}
|