
:mod:`curses.ascii` --- ASCII 文字に関するユーティリティ
========================================================

.. module:: curses.ascii
   :synopsis: ASCII 文字に関する定数および集合帰属関数。
.. moduleauthor:: Eric S. Raymond <esr@thyrsus.com>
.. sectionauthor:: Eric S. Raymond <esr@thyrsus.com>


.. versionadded:: 1.6

:mod:`curses.ascii` モジュールでは、 ASCII 文字を指す名前定数と、様々な ASCII 文字区分についてある文字が帰属するか
どうかを調べる関数を提供します。このモジュールで提供されている定数は以下の制御文字の名前です:

+--------------+----------------------------------------------+
| Name         | Meaning                                      |
+==============+==============================================+
| :const:`NUL` | 空                                           |
+--------------+----------------------------------------------+
| :const:`SOH` | ヘディング開始、コンソール割り込み           |
+--------------+----------------------------------------------+
| :const:`STX` | テキスト開始                                 |
+--------------+----------------------------------------------+
| :const:`ETX` | テキスト終了                                 |
+--------------+----------------------------------------------+
| :const:`EOT` | テキスト伝送終了                             |
+--------------+----------------------------------------------+
| :const:`ENQ` | 問い合わせ、 :const:`ACK` フロー制御時に使用 |
+--------------+----------------------------------------------+
| :const:`ACK` | 肯定応答                                     |
+--------------+----------------------------------------------+
| :const:`BEL` | ベル                                         |
+--------------+----------------------------------------------+
| :const:`BS`  | 一文字後退                                   |
+--------------+----------------------------------------------+
| :const:`TAB` | タブ                                         |
+--------------+----------------------------------------------+
| :const:`HT`  | :const:`TAB` の別名: "水平タブ"              |
+--------------+----------------------------------------------+
| :const:`LF`  | 改行                                         |
+--------------+----------------------------------------------+
| :const:`NL`  | :const:`LF` の別名: "改行"                   |
+--------------+----------------------------------------------+
| :const:`VT`  | 垂直タブ                                     |
+--------------+----------------------------------------------+
| :const:`FF`  | 改頁                                         |
+--------------+----------------------------------------------+
| :const:`CR`  | 復帰                                         |
+--------------+----------------------------------------------+
| :const:`SO`  | シフトアウト、他の文字セットの開始           |
+--------------+----------------------------------------------+
| :const:`SI`  | シフトイン、標準の文字セットに復帰           |
+--------------+----------------------------------------------+
| :const:`DLE` | データリンクでのエスケープ                   |
+--------------+----------------------------------------------+
| :const:`DC1` | 装置制御 1、フロー制御のための XON           |
+--------------+----------------------------------------------+
| :const:`DC2` | 装置制御 2、ブロックモードフロー制御         |
+--------------+----------------------------------------------+
| :const:`DC3` | 装置制御 3、フロー制御のための XOFF          |
+--------------+----------------------------------------------+
| :const:`DC4` | 装置制御 4                                   |
+--------------+----------------------------------------------+
| :const:`NAK` | 否定応答                                     |
+--------------+----------------------------------------------+
| :const:`SYN` | 同期信号                                     |
+--------------+----------------------------------------------+
| :const:`ETB` | ブロック転送終了                             |
+--------------+----------------------------------------------+
| :const:`CAN` | キャンセル                                   |
+--------------+----------------------------------------------+
| :const:`EM`  | 媒体終端                                     |
+--------------+----------------------------------------------+
| :const:`SUB` | 代入文字                                     |
+--------------+----------------------------------------------+
| :const:`ESC` | エスケープ文字                               |
+--------------+----------------------------------------------+
| :const:`FS`  | ファイル区切り文字                           |
+--------------+----------------------------------------------+
| :const:`GS`  | グループ区切り文字                           |
+--------------+----------------------------------------------+
| :const:`RS`  | レコード区切り文字、ブロックモード終了子     |
+--------------+----------------------------------------------+
| :const:`US`  | 単位区切り文字                               |
+--------------+----------------------------------------------+
| :const:`SP`  | 空白文字                                     |
+--------------+----------------------------------------------+
| :const:`DEL` | 削除                                         |
+--------------+----------------------------------------------+

これらの大部分は、最近は実際に定数の意味通りに使われることがほとんどないので注意してください。これらのニーモニック符号はデジタル計算機
より前のテレプリンタにおける慣習から付けられたものです。

このモジュールでは、標準 C ライブラリの関数を雛型とする以下の関数をサポートしています:


.. function:: isalnum(c)

   ASCII 英数文字かどうかを調べます;  ``isalpha(c) or isdigit(c)`` と等価です。


.. function:: isalpha(c)

   ASCII アルファベット文字かどうかを調べます;  ``isupper(c) or islower(c)`` と等価です。


.. function:: isascii(c)

   文字が 7 ビット ASCII 文字に合致するかどうかを調べます。


.. function:: isblank(c)

   ASCII 余白文字かどうかを調べます。


.. function:: iscntrl(c)

   ASCII 制御文字 (0x00 から 0x1f の範囲) かどうかを調べます。


.. function:: isdigit(c)

   ASCII 10 進数字、すなわち ``'0'`` から ``'9'`` までの文字かどうかを調べます。 ``c in string.digits``
   と等価です。


.. function:: isgraph(c)

   空白以外の ASCII 印字可能文字かどうかを調べます。


.. function:: islower(c)

   ASCII 小文字かどうかを調べます。


.. function:: isprint(c)

   空白文字を含め、 ASCII 印字可能文字かどうかを調べます。


.. function:: ispunct(c)

   空白または英数字以外の ASCII 印字可能文字かどうかを調べます。


.. function:: isspace(c)

   ASCII 余白文字、すなわち空白、改行、復帰、改頁、水平タブ、垂直タブかどうかを調べます。


.. function:: isupper(c)

   ASCII 大文字かどうかを調べます。


.. function:: isxdigit(c)

   ASCII 16 進数字かどうかを調べます。 ``c in string.hexdigits`` と等価です。


.. function:: isctrl(c)

   ASCII 制御文字 (0 から 31 までの値) かどうかを調べます。


.. function:: ismeta(c)

   非 ASCII 文字 (0x80 またはそれ以上の値) かどうかを調べます。

これらの関数は数字も文字列も使えます; 引数を文字列にした場合、組み込み関数 :func:`ord` を使って変換されます。

これらの関数は全て、関数に渡した文字列の最初の文字から得られたビット値を調べるので注意してください; 関数はホスト計算機で使われている
文字列エンコーディングについて何ら関知しません。文字列エンコーディングについて関知する (そして国際化に関するプロパティを正しく扱う) 関数については、
モジュール :mod:`string` を参照してください。

以下の 2 つの関数は、引数として 1 文字の文字列または整数で表したバイト値のどちらでもとり得ます; これらの関数は引数と同じ型で値を返します。


.. function:: ascii(c)

   ASCII 値を返します。 *c* の下位 7 ビットに対応します。


.. function:: ctrl(c)

   与えた文字に対応する制御文字を返します (0x1f とビット単位で論理積を取ります) 。


.. function:: alt(c)

   与えた文字に対応する 8 ビット文字を返します (0x80 とビット単位で論理和を取ります) 。

以下の関数は 1 文字からなる文字列値または整数値を引数に取り、文字列を返します。


.. function:: unctrl(c)

   ASCII 文字 *c* の文字列表現を返します。もし *c* が印字可能文字であれば、返される文字列は *c* そのものになります。もし *c*
   が制御文字 (0x00-0x1f) であれば、キャレット (``'^'``) と、その後ろに続く *c* に対応した大文字からなる文字列になります。 *c*
   が ASCII 削除文字 (0x7f) であれば、文字列は ``'^?'`` になります。 *c* のメタビット (0x80)
   がセットされていれば、メタビットは取り去られ、前述のルールが適用され、 ``'!'`` が前につけられます。


.. data:: controlnames

   0 (NUL) から 0x1f (US) までの 32 の ASCII 制御文字と、空白文字 ``SP`` のニーモニック符号名からなる 33
   要素の文字列によるシーケンスです。

