"stringprep" --- インターネットの文字列調製
*******************************************

**ソースコード:** Lib/stringprep.py

======================================================================

(ホスト名のような) インターネット上にある存在に識別名をつける際、しば
しば識別名間の "等価性" 比較を行う必要があります。厳密には、例えば大小
文字の区別をするかしないかいったように、比較をどのように行うかはアプリ
ケーションの領域に依存します。また、例えば "印字可能な" 文字で構成され
た識別名だけを許可するといったように、可能な識別名を制限することも必要
となるかもしれません。

**RFC 3454** では、インターネットプロトコル上で Unicode 文字列を "調製
(prepare)" するためのプロシジャを定義しています。文字列は通信路に載せ
られる前に調製プロシジャで処理され、その結果ある正規化された形式になり
ます。RFC ではあるテーブルの集合を定義しており、それらはプロファイルに
まとめられています。各プロファイルでは、どのテーブルを使い、
"stringprep" プロシジャのどのオプション部分がプロファイルの一部になっ
ているかを定義しています。 "stringprep" プロファイルの一つの例は
"nameprep" で、国際化されたドメイン名に使われます。

The module "stringprep" only exposes the tables from **RFC 3454**. As
these tables would be very large to represent as dictionaries or
lists, the module uses the Unicode character database internally. The
module source code itself was generated using the "mkstringprep.py"
utility.

As a result, these tables are exposed as functions, not as data
structures. There are two kinds of tables in the RFC: sets and
mappings. For a set, "stringprep" provides the "characteristic
function", i.e. a function that returns "True" if the parameter is
part of the set. For mappings, it provides the mapping function: given
the key, it returns the associated value. Below is a list of all
functions available in the module.

stringprep.in_table_a1(code)

   *code* がテーブル A.1 (Unicode 3.2 における未割り当てコードポイント
   : unassigned code point) かどうか判定します。

stringprep.in_table_b1(code)

   *code* がテーブル B.1 (一般には何にも対応付けられていない: commonly
   mapped to nothing) かどうか判定します。

stringprep.map_table_b2(code)

   テーブル B.2 (NFKC で用いられる大小文字の対応付け) に従って、*code*
   に対応付けられた値を返します。

stringprep.map_table_b3(code)

   テーブル B.3 (正規化を伴わない大小文字の対応付け) に従って、*code*
   に対応付けられた値を返します。

stringprep.in_table_c11(code)

   *code* がテーブル C.1.1 (ASCII スペース文字) かどうか判定します。

stringprep.in_table_c12(code)

   *code* がテーブル C.1.2 (非 ASCII スペース文字) かどうか判定します
   。

stringprep.in_table_c11_c12(code)

   *code* がテーブル C.1  (スペース文字、C.1.1 および C.1.2 の和集合)
   かどうか判定します。

stringprep.in_table_c21(code)

   *code* がテーブル C.2.1 (ASCII 制御文字) かどうか判定します。

stringprep.in_table_c22(code)

   *code* がテーブル C.2.2 (非 ASCII 制御文字) かどうか判定します。

stringprep.in_table_c21_c22(code)

   *code* がテーブル C.2  (制御文字、C.2.1 および C.2.2 の和集合) かど
   うか判定します。

stringprep.in_table_c3(code)

   *code* がテーブル C.3 (プライベート利用) かどうか判定します。

stringprep.in_table_c4(code)

   *code* がテーブル C.4 (非文字コードポイント: non-character code
   points) かどうか判定します。

stringprep.in_table_c5(code)

   *code* がテーブル C.5 (サロゲーションコード) かどうか判定します。

stringprep.in_table_c6(code)

   *code* がテーブル C.6 (平文:plain text として不適切) かどうか判定し
   ます。

stringprep.in_table_c7(code)

   *code* がテーブル C.7 (標準表現:canonical representation  として不
   適切) かどうか判定します。

stringprep.in_table_c8(code)

   *code* がテーブル C.8 (表示プロパティの変更または撤廃) かどうか判定
   します。

stringprep.in_table_c9(code)

   *code* がテーブル C.9 (タグ文字) かどうか判定します。

stringprep.in_table_d1(code)

   *code* がテーブル D.1 (双方向プロパティ "R" または "AL"  を持つ文字
   ) かどうか判定します。

stringprep.in_table_d2(code)

   *code* がテーブル D.2 (双方向プロパティ "L" を持つ文字)  かどうか判
   定します。
