"stringprep" --- Internet String Preparation
********************************************

**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 them as dictionaries or
lists, the module uses the Unicode character database internally. The
module source code itself was generated using the "mkstringprep.py"
utility.

Como resultado, essas tabelas são expostas como funções, não como
estruturas de dados. Existem dois tipos de tabelas no RFC: conjuntos e
mapeamentos. Para um conjunto, "stringprep" fornece a "função
característica", ou seja, uma função que retorna "True" se o parâmetro
fizer parte do conjunto. Para mapeamentos, ele fornece a função de
mapeamento: dada a chave, ele retorna o valor associado. Abaixo está
uma lista de todas as funções disponíveis no módulo.

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").
