# `stringprep` — Internet String Preparation

Вихідний код: Lib/stringprep.py

Під час ідентифікації речей (наприклад, імен хостів) в Інтернеті часто необхідно порівнювати такі ідентифікації на «рівність». Те, як саме виконується це порівняння, може залежати від домену програми, напр. чи має він бути нечутливим до регістру чи ні. Також може знадобитися обмежити можливі ідентифікації, щоб дозволити лише ідентифікації, що складаються з «друкованих» символів.

RFC 3454 визначає процедуру «підготовки» рядків Unicode в інтернет-протоколах. Перед пропусканням струн на дріт їх обробляють процедурою підготовки, після чого вони мають певну нормовану форму. 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)

  Визначте, чи є код у таблиці A.1 (непризначені кодові точки в Unicode 3.2).

stringprep.in_table_b1(code)

  Визначте, чи міститься код у таблиці B.1 (зазвичай не відображається).

stringprep.map_table_b2(code)

  Повертає зіставлене значення для коду відповідно до таблиці B.2 (відповідність для згортання регістру, що використовується з NFKC).

stringprep.map_table_b3(code)

  Повертає відображене значення для коду відповідно до таблиці B.3 (відображення для згортання регістру використовується без нормалізації).

stringprep.in_table_c11(code)

  Визначте, чи міститься код у таблиці C.1.1 (символи ASCII).

stringprep.in_table_c12(code)

  Визначте, чи є код у таблиці C.1.2 (символи, що не є ASCII).

stringprep.in_table_c11_c12(code)

  Визначте, чи є код у таблиці C.1 (пробіли, об’єднання C.1.1 і C.1.2).

stringprep.in_table_c21(code)

  Визначте, чи є код у таблиці C.2.1 (контрольні символи ASCII).

stringprep.in_table_c22(code)

  Визначте, чи є код у таблиці C.2.2 (керуючі символи, що не є ASCII).

stringprep.in_table_c21_c22(code)

  Визначте, чи є код у таблиці C.2 (контрольні символи, об’єднання C.2.1 і C.2.2).

stringprep.in_table_c3(code)

  Визначте, чи є код у таблиці C.3 (приватне використання).

stringprep.in_table_c4(code)

  Визначте, чи є код у таблиці C.4 (несимвольні кодові точки).

stringprep.in_table_c5(code)

  Визначте, чи є код у таблиці C.5 (Сурогатні коди).

stringprep.in_table_c6(code)

  Визначте, чи міститься код у таблиці C.6 (неприйнятний для звичайного тексту).

stringprep.in_table_c7(code)

  Визначте, чи є код у таблиці C.7 (невідповідний для канонічного представлення).

stringprep.in_table_c8(code)

  Визначте, чи є код у таблиці C.8 (змінити властивості відображення або застаріли).

stringprep.in_table_c9(code)

  Визначте, чи є код у таблиці C.9 (символи тегів).

stringprep.in_table_d1(code)

  Визначте, чи є код у таблиці D.1 (символи з двонаправленою властивістю «R» або «AL»).

stringprep.in_table_d2(code)

  Визначте, чи є код у таблиці D.2 (Символи з двонаправленою властивістю «L»).