\section{\module{curses.ascii} ---
         Utilities for ASCII characters}

\declaremodule{standard}{curses.ascii}
\modulesynopsis{Constants and set-membership functions for
                \ASCII{} characters.}
\moduleauthor{Eric S. Raymond}{esr@thyrsus.com}
\sectionauthor{Eric S. Raymond}{esr@thyrsus.com}

\versionadded{1.6}

The \module{curses.ascii} module supplies name constants for
\ASCII{} characters and functions to test membership in various
\ASCII{} character classes.  The constants supplied are names for
control characters as follows:

\begin{tableii}{l|l}{constant}{Name}{Meaning}
  \lineii{NUL}{}
  \lineii{SOH}{Start of heading, console interrupt}
  \lineii{STX}{Start of text}
  \lineii{ETX}{End of text}
  \lineii{EOT}{End of transmission}
  \lineii{ENQ}{Enquiry, goes with \constant{ACK} flow control}
  \lineii{ACK}{Acknowledgement}
  \lineii{BEL}{Bell}
  \lineii{BS}{Backspace}
  \lineii{TAB}{Tab}
  \lineii{HT}{Alias for \constant{TAB}: ``Horizontal tab''}
  \lineii{LF}{Line feed}
  \lineii{NL}{Alias for \constant{LF}: ``New line''}
  \lineii{VT}{Vertical tab}
  \lineii{FF}{Form feed}
  \lineii{CR}{Carriage return}
  \lineii{SO}{Shift-out, begin alternate character set}
  \lineii{SI}{Shift-in, resume default character set}
  \lineii{DLE}{Data-link escape}
  \lineii{DC1}{XON, for flow control}
  \lineii{DC2}{Device control 2, block-mode flow control}
  \lineii{DC3}{XOFF, for flow control}
  \lineii{DC4}{Device control 4}
  \lineii{NAK}{Negative acknowledgement}
  \lineii{SYN}{Synchronous idle}
  \lineii{ETB}{End transmission block}
  \lineii{CAN}{Cancel}
  \lineii{EM}{End of medium}
  \lineii{SUB}{Substitute}
  \lineii{ESC}{Escape}
  \lineii{FS}{File separator}
  \lineii{GS}{Group separator}
  \lineii{RS}{Record separator, block-mode terminator}
  \lineii{US}{Unit separator}
  \lineii{SP}{Space}
  \lineii{DEL}{Delete}
\end{tableii}

Note that many of these have little practical significance in modern
usage.  The mnemonics derive from teleprinter conventions that predate
digital computers.

The module supplies the following functions, patterned on those in the
standard C library:


\begin{funcdesc}{isalnum}{c}
Checks for an \ASCII{} alphanumeric character; it is equivalent to
\samp{isalpha(\var{c}) or isdigit(\var{c})}.
\end{funcdesc}

\begin{funcdesc}{isalpha}{c}
Checks for an \ASCII{} alphabetic character; it is equivalent to
\samp{isupper(\var{c}) or islower(\var{c})}.
\end{funcdesc}

\begin{funcdesc}{isascii}{c}
Checks for a character value that fits in the 7-bit \ASCII{} set.
\end{funcdesc}

\begin{funcdesc}{isblank}{c}
Checks for an \ASCII{} whitespace character.
\end{funcdesc}

\begin{funcdesc}{iscntrl}{c}
Checks for an \ASCII{} control character (in the range 0x00 to 0x1f).
\end{funcdesc}

\begin{funcdesc}{isdigit}{c}
Checks for an \ASCII{} decimal digit, \character{0} through
\character{9}.  This is equivalent to \samp{\var{c} in string.digits}.
\end{funcdesc}

\begin{funcdesc}{isgraph}{c}
Checks for \ASCII{} any printable character except space.
\end{funcdesc}

\begin{funcdesc}{islower}{c}
Checks for an \ASCII{} lower-case character.
\end{funcdesc}

\begin{funcdesc}{isprint}{c}
Checks for any \ASCII{} printable character including space.
\end{funcdesc}

\begin{funcdesc}{ispunct}{c}
Checks for any printable \ASCII{} character which is not a space or an
alphanumeric character.
\end{funcdesc}

\begin{funcdesc}{isspace}{c}
Checks for \ASCII{} white-space characters; space, line feed,
carriage return, form feed, horizontal tab, vertical tab.
\end{funcdesc}

\begin{funcdesc}{isupper}{c}
Checks for an \ASCII{} uppercase letter.
\end{funcdesc}

\begin{funcdesc}{isxdigit}{c}
Checks for an \ASCII{} hexadecimal digit.  This is equivalent to
\samp{\var{c} in string.hexdigits}.
\end{funcdesc}

\begin{funcdesc}{isctrl}{c}
Checks for an \ASCII{} control character (ordinal values 0 to 31).
\end{funcdesc}

\begin{funcdesc}{ismeta}{c}
Checks for a non-\ASCII{} character (ordinal values 0x80 and above).
\end{funcdesc}

These functions accept either integers or strings; when the argument
is a string, it is first converted using the built-in function
\function{ord()}.

Note that all these functions check ordinal bit values derived from the 
first character of the string you pass in; they do not actually know
anything about the host machine's character encoding.  For functions 
that know about the character encoding (and handle
internationalization properly) see the \refmodule{string} module.

The following two functions take either a single-character string or
integer byte value; they return a value of the same type.

\begin{funcdesc}{ascii}{c}
Return the ASCII value corresponding to the low 7 bits of \var{c}.
\end{funcdesc}

\begin{funcdesc}{ctrl}{c}
Return the control character corresponding to the given character
(the character bit value is bitwise-anded with 0x1f).
\end{funcdesc}

\begin{funcdesc}{alt}{c}
Return the 8-bit character corresponding to the given ASCII character
(the character bit value is bitwise-ored with 0x80).
\end{funcdesc}

The following function takes either a single-character string or
integer value; it returns a string.

\begin{funcdesc}{unctrl}{c}
Return a string representation of the \ASCII{} character \var{c}.  If
\var{c} is printable, this string is the character itself.  If the
character is a control character (0x00-0x1f) the string consists of a
caret (\character{\^}) followed by the corresponding uppercase letter.
If the character is an \ASCII{} delete (0x7f) the string is
\code{'\^{}?'}.  If the character has its meta bit (0x80) set, the meta
bit is stripped, the preceding rules applied, and
\character{!} prepended to the result.
\end{funcdesc}

\begin{datadesc}{controlnames}
A 33-element string array that contains the \ASCII{} mnemonics for the
thirty-two \ASCII{} control characters from 0 (NUL) to 0x1f (US), in
order, plus the mnemonic \samp{SP} for the space character.
\end{datadesc}
