1:mod:`curses.ascii` --- Utilities for ASCII characters
2======================================================
3
4.. module:: curses.ascii
5   :synopsis: Constants and set-membership functions for ASCII characters.
6
7.. moduleauthor:: Eric S. Raymond <esr@thyrsus.com>
8.. sectionauthor:: Eric S. Raymond <esr@thyrsus.com>
9
10**Source code:** :source:`Lib/curses/ascii.py`
11
12--------------
13
14The :mod:`curses.ascii` module supplies name constants for ASCII characters and
15functions to test membership in various ASCII character classes.  The constants
16supplied are names for control characters as follows:
17
18+---------------+----------------------------------------------+
19| Name          | Meaning                                      |
20+===============+==============================================+
21| .. data:: NUL |                                              |
22+---------------+----------------------------------------------+
23| .. data:: SOH | Start of heading, console interrupt          |
24+---------------+----------------------------------------------+
25| .. data:: STX | Start of text                                |
26+---------------+----------------------------------------------+
27| .. data:: ETX | End of text                                  |
28+---------------+----------------------------------------------+
29| .. data:: EOT | End of transmission                          |
30+---------------+----------------------------------------------+
31| .. data:: ENQ | Enquiry, goes with :const:`ACK` flow control |
32+---------------+----------------------------------------------+
33| .. data:: ACK | Acknowledgement                              |
34+---------------+----------------------------------------------+
35| .. data:: BEL | Bell                                         |
36+---------------+----------------------------------------------+
37| .. data:: BS  | Backspace                                    |
38+---------------+----------------------------------------------+
39| .. data:: TAB | Tab                                          |
40+---------------+----------------------------------------------+
41| .. data:: HT  | Alias for :const:`TAB`: "Horizontal tab"     |
42+---------------+----------------------------------------------+
43| .. data:: LF  | Line feed                                    |
44+---------------+----------------------------------------------+
45| .. data:: NL  | Alias for :const:`LF`: "New line"            |
46+---------------+----------------------------------------------+
47| .. data:: VT  | Vertical tab                                 |
48+---------------+----------------------------------------------+
49| .. data:: FF  | Form feed                                    |
50+---------------+----------------------------------------------+
51| .. data:: CR  | Carriage return                              |
52+---------------+----------------------------------------------+
53| .. data:: SO  | Shift-out, begin alternate character set     |
54+---------------+----------------------------------------------+
55| .. data:: SI  | Shift-in, resume default character set       |
56+---------------+----------------------------------------------+
57| .. data:: DLE | Data-link escape                             |
58+---------------+----------------------------------------------+
59| .. data:: DC1 | XON, for flow control                        |
60+---------------+----------------------------------------------+
61| .. data:: DC2 | Device control 2, block-mode flow control    |
62+---------------+----------------------------------------------+
63| .. data:: DC3 | XOFF, for flow control                       |
64+---------------+----------------------------------------------+
65| .. data:: DC4 | Device control 4                             |
66+---------------+----------------------------------------------+
67| .. data:: NAK | Negative acknowledgement                     |
68+---------------+----------------------------------------------+
69| .. data:: SYN | Synchronous idle                             |
70+---------------+----------------------------------------------+
71| .. data:: ETB | End transmission block                       |
72+---------------+----------------------------------------------+
73| .. data:: CAN | Cancel                                       |
74+---------------+----------------------------------------------+
75| .. data:: EM  | End of medium                                |
76+---------------+----------------------------------------------+
77| .. data:: SUB | Substitute                                   |
78+---------------+----------------------------------------------+
79| .. data:: ESC | Escape                                       |
80+---------------+----------------------------------------------+
81| .. data:: FS  | File separator                               |
82+---------------+----------------------------------------------+
83| .. data:: GS  | Group separator                              |
84+---------------+----------------------------------------------+
85| .. data:: RS  | Record separator, block-mode terminator      |
86+---------------+----------------------------------------------+
87| .. data:: US  | Unit separator                               |
88+---------------+----------------------------------------------+
89| .. data:: SP  | Space                                        |
90+---------------+----------------------------------------------+
91| .. data:: DEL | Delete                                       |
92+---------------+----------------------------------------------+
93
94Note that many of these have little practical significance in modern usage.  The
95mnemonics derive from teleprinter conventions that predate digital computers.
96
97The module supplies the following functions, patterned on those in the standard
98C library:
99
100
101.. function:: isalnum(c)
102
103   Checks for an ASCII alphanumeric character; it is equivalent to ``isalpha(c) or
104   isdigit(c)``.
105
106
107.. function:: isalpha(c)
108
109   Checks for an ASCII alphabetic character; it is equivalent to ``isupper(c) or
110   islower(c)``.
111
112
113.. function:: isascii(c)
114
115   Checks for a character value that fits in the 7-bit ASCII set.
116
117
118.. function:: isblank(c)
119
120   Checks for an ASCII whitespace character; space or horizontal tab.
121
122
123.. function:: iscntrl(c)
124
125   Checks for an ASCII control character (in the range 0x00 to 0x1f or 0x7f).
126
127
128.. function:: isdigit(c)
129
130   Checks for an ASCII decimal digit, ``'0'`` through ``'9'``.  This is equivalent
131   to ``c in string.digits``.
132
133
134.. function:: isgraph(c)
135
136   Checks for ASCII any printable character except space.
137
138
139.. function:: islower(c)
140
141   Checks for an ASCII lower-case character.
142
143
144.. function:: isprint(c)
145
146   Checks for any ASCII printable character including space.
147
148
149.. function:: ispunct(c)
150
151   Checks for any printable ASCII character which is not a space or an alphanumeric
152   character.
153
154
155.. function:: isspace(c)
156
157   Checks for ASCII white-space characters; space, line feed, carriage return, form
158   feed, horizontal tab, vertical tab.
159
160
161.. function:: isupper(c)
162
163   Checks for an ASCII uppercase letter.
164
165
166.. function:: isxdigit(c)
167
168   Checks for an ASCII hexadecimal digit.  This is equivalent to ``c in
169   string.hexdigits``.
170
171
172.. function:: isctrl(c)
173
174   Checks for an ASCII control character (ordinal values 0 to 31).
175
176
177.. function:: ismeta(c)
178
179   Checks for a non-ASCII character (ordinal values 0x80 and above).
180
181These functions accept either integers or single-character strings; when the argument is a
182string, it is first converted using the built-in function :func:`ord`.
183
184Note that all these functions check ordinal bit values derived from the
185character of the string you pass in; they do not actually know anything about
186the host machine's character encoding.
187
188The following two functions take either a single-character string or integer
189byte value; they return a value of the same type.
190
191
192.. function:: ascii(c)
193
194   Return the ASCII value corresponding to the low 7 bits of *c*.
195
196
197.. function:: ctrl(c)
198
199   Return the control character corresponding to the given character (the character
200   bit value is bitwise-anded with 0x1f).
201
202
203.. function:: alt(c)
204
205   Return the 8-bit character corresponding to the given ASCII character (the
206   character bit value is bitwise-ored with 0x80).
207
208The following function takes either a single-character string or integer value;
209it returns a string.
210
211
212.. index::
213   single: ^ (caret); in curses module
214   single: ! (exclamation); in curses module
215
216.. function:: unctrl(c)
217
218   Return a string representation of the ASCII character *c*.  If *c* is printable,
219   this string is the character itself.  If the character is a control character
220   (0x00--0x1f) the string consists of a caret (``'^'``) followed by the
221   corresponding uppercase letter. If the character is an ASCII delete (0x7f) the
222   string is ``'^?'``.  If the character has its meta bit (0x80) set, the meta bit
223   is stripped, the preceding rules applied, and ``'!'`` prepended to the result.
224
225
226.. data:: controlnames
227
228   A 33-element string array that contains the ASCII mnemonics for the thirty-two
229   ASCII control characters from 0 (NUL) to 0x1f (US), in order, plus the mnemonic
230   ``SP`` for the space character.
231
232