stringprep — Подготовка интернет-строки

Исходный код: Lib/stringprep.py.


При идентификации объектов (например, имен хостов) в Интернете часто возникает необходимость сравнить такие идентификаторы на «равенство». То, как именно выполняется это сравнение, может зависеть от области применения, например, должно ли оно быть нечувствительным к регистру или нет. Также может потребоваться ограничить возможные идентификаторы, чтобы разрешить только идентификаторы, состоящие из «печатаемых» символов.

RFC 3454 определяет процедуру «подготовки» строк Unicode в интернет-протоколах. Перед передачей строк по проводам они обрабатываются процедурой подготовки, после чего имеют определенную нормализованную форму. RFC определяет набор таблиц, которые могут быть объединены в профили. Каждый профиль должен определить, какие таблицы он использует, и какие другие необязательные части процедуры stringprep являются частью профиля. Одним из примеров профиля stringprep является nameprep, который используется для интернационализированных доменных имен.

Модуль stringprep раскрывает только таблицы из RFC 3454. Поскольку эти таблицы были бы очень большими для представления их в виде словарей или списков, модуль использует внутреннюю базу данных символов Unicode. Сам исходный код модуля был сгенерирован с помощью утилиты mkstringprep.py.

В результате эти таблицы раскрываются как функции, а не как структуры данных. В RFC есть два вида таблиц: наборы и отображения. Для множества stringprep предоставляет «характеристическую функцию», то есть функцию, которая возвращает True, если параметр является частью множества. Для отображений она предоставляет функцию отображения: учитывая ключ, она возвращает соответствующее значение. Ниже приведен список всех функций, доступных в модуле.

stringprep.in_table_a1(code)

Определите, находится ли код в таблицеА.1 (Неназначенные кодовые точки в Unicode 3.2).

stringprep.in_table_b1(code)

Определите, находится ли код в таблицеВ.1 (обычно отображается на ничего).

stringprep.map_table_b2(code)

Возвращает сопоставленное значение для code в соответствии с таблицейВ.2 (Сопоставление для сложения регистров, используемое с NFKC).

stringprep.map_table_b3(code)

Возвращает сопоставленное значение для code в соответствии с таблицейВ.3 (Сопоставление для сложения регистров без нормализации).

stringprep.in_table_c11(code)

Определите, находится ли код в таблицеС.1.1 (пробельные символы ASCII).

stringprep.in_table_c12(code)

Определите, находится ли код в таблицеС.1.2 (Пробельные символы, не относящиеся кASCII).

stringprep.in_table_c11_c12(code)

Определите, находится ли код в таблицеС.1 (Пробельные символы, объединение C.1.1 и C.1.2).

stringprep.in_table_c21(code)

Определите, есть ли код в таблицеС.2.1 (управляющие символы ASCII).

stringprep.in_table_c22(code)

Определите, входит ли код в таблицуС.2.2 (Управляющие символы, не входящие в ASCII).

stringprep.in_table_c21_c22(code)

Определите, есть ли код в таблицеС.2 (Управляющие символы, объединение С.2.1 и С.2.2).

stringprep.in_table_c3(code)

Определите, находится ли код в таблицеС.3 (Частное использование).

stringprep.in_table_c4(code)

Определите, есть ли code в таблицеC.4 (Кодовые точки несимволов).

stringprep.in_table_c5(code)

Определите, есть ли код в таблицеС.5 (Суррогатные коды).

stringprep.in_table_c6(code)

Определите, находится ли код в таблицеС.6 (Неуместно для обычного текста).

stringprep.in_table_c7(code)

Определите, находится ли код в таблицеС.7 (Неподходящий для канонического представления).

stringprep.in_table_c8(code)

Определите, находится ли код в таблицеС.8 (Изменяет свойства отображения или является устаревшим).

stringprep.in_table_c9(code)

Определите, есть ли код в таблицеС.9 (Символы тегов).

stringprep.in_table_d1(code)

Определите, находится ли код в таблицеD.1 (Символы с двунаправленным свойством «R» или «AL»).

stringprep.in_table_d2(code)

Определите, находится ли код в таблицеD.2 (Символы с двунаправленным свойством «L»).

Вернуться на верх