"stringprep" --- Preparação de string para internet
***************************************************

**Código-fonte:** Lib/stringprep.py

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

Ao identificar coisas (como nomes de host) na internet, muitas vezes é
necessário comparar tais identificações para "igualdade". Exatamente
como essa comparação é executada pode depender do domínio da
aplicação, por exemplo, se deve ser insensível a maiúsculas e
minúsculas ou não. Também pode ser necessário restringir as possíveis
identificações, para permitir apenas identificações consistindo de
caracteres "imprimíveis".

**RFC 3454** define um procedimento para "preparar" strings Unicode em
protocolos de internet. Antes de passar strings para o fio, elas são
processadas com o procedimento de preparação, após o qual elas têm uma
certa forma normalizada. O RFC define um conjunto de tabelas, que
podem ser combinadas em perfis. Cada perfil deve definir quais tabelas
ele usa, e quais outras partes opcionais do procedimento "stringprep"
são parte do perfil. Um exemplo de um perfil "stringprep" é
"nameprep", que é usado para nomes de domínio internacionalizados.

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)

   Determina se *code* está na tabela A.1 (pontos de código não
   atribuídos no Unicode 3.2).

stringprep.in_table_b1(code)

   Determina se *code* está na tabela B.1 (comumente mapeado para
   nada).

stringprep.map_table_b2(code)

   Retorna o valor mapeado para *code* de acordo com a tabela B.2
   (mapeamento para dobramento de casos usado com NFKC).

stringprep.map_table_b3(code)

   Retorna o valor mapeado para *code* de acordo com a tabela B.3
   (mapeamento para dobramento de casos usado com nenhuma
   normalização).

stringprep.in_table_c11(code)

   Determina se *code* está na tabela C.1.1 (caracteres de espaço
   ASCII).

stringprep.in_table_c12(code)

   Determina se *code* está na tabela C.1.2 (caracteres de espaço não-
   ASCII).

stringprep.in_table_c11_c12(code)

   Determina se *code* está na tabela C.1 (caracteres de espaço, união
   de C.1.1 e C.1.2).

stringprep.in_table_c21(code)

   Determina se *code* está na tabela C.2.1 (caracteres de controle
   ASCII).

stringprep.in_table_c22(code)

   Determina se *code* está na tabela C.2.2 (caracteres de controle
   não-ASCII).

stringprep.in_table_c21_c22(code)

   Determina se *code* está na tabela C.2 (caracteres de controle,
   união de C.2.1 e C.2.2).

stringprep.in_table_c3(code)

   Determina se *code* está na tabela C.3 (uso privado).

stringprep.in_table_c4(code)

   Determina se *code* está na tabela C.4 (pontos de código não-
   caracteres).

stringprep.in_table_c5(code)

   Determina se *code* está na tabela C.5 (códigos substitutos).

stringprep.in_table_c6(code)

   Determina se *code* está na tabela C.6 (inapropriado para texto
   simples).

stringprep.in_table_c7(code)

   Determina se *code* está na tabela C.7 (inapropriado para para
   representação canônica).

stringprep.in_table_c8(code)

   Determina se *code* está na tabela C.8 (alteram propriedades de
   exibição ou estão descontinuadas).

stringprep.in_table_c9(code)

   Determina se *code* está na tabela C.9 (caracteres de tag).

stringprep.in_table_d1(code)

   Determina se *code* está na tabela D.1 (Caracteres com propriedade
   bidirecional "R" ou "AL").

stringprep.in_table_d2(code)

   Determina se *code* está na tabela D.2 (Caracteres com propriedade
   bidirecional "L").
