stringprep
ИМЯ
stringprep — реализация stringprep
Содержание
СВОДКА
package require Tcl 8.5 9
package require stringprep 1.0.3
::stringprep::register profile ?-mapping list? ?-normalization form? ?-prohibited list? ?-prohibitedList list? ?-prohibitedCommand command? ?-prohibitedBidi boolean?
::stringprep::stringprep profile string
::stringprep::compare profile string1 string2
ОПИСАНИЕ
Это реализация на Tcl подготовки интернационализированных строк («stringprep»). Она позволяет определять профили stringprep и использовать их для подготовки строк Unicode к сравнению, как определено в RFC-3454.
КОМАНДЫ
-
::stringprep::register profile ?-mapping list? ?-normalization form? ?-prohibited list? ?-prohibitedList list? ?-prohibitedCommand command? ?-prohibitedBidi boolean?
Регистрирует профиль stringprep с именем profile. Доступны следующие параметры.
Параметр -mapping задаёт таблицы отображения stringprep. Этот параметр принимает список таблиц из приложения B RFC-3454. Обычно используются значения списка {B.1 B.2} или {B.1 B.3}, где B.1 содержит символы, которые обычно отображаются в пустую строку, B.3 задаёт преобразование регистра, а B.2 используется в профилях с формой нормализации Unicode KC. Значение по умолчанию — {}, то есть отображение не выполняется.
Параметр -normalization принимает строку; если она непустая, то используется как имя формы нормализации Unicode. Можно использовать значения "D", "C", "KD" или "KC", хотя RFC-3454 определяет только два варианта: без нормализации или нормализация с использованием формы KC.
Параметр -prohibited принимает список таблиц RFC-3454 с запрещёнными символами. Текущая версия позволяет запретить либо все таблицы от C.3 до C.9, либо ни одну из них. Пример такого списка для RFC-3491: {A.1 C.1.2 C.2.2 C.3 C.4 C.5 C.6 C.7 C.8 C.9}.
Параметр -prohibitedList задаёт список дополнительных запрещённых символов. Список содержит не сами символы, а их номера Unicode. Например, спецификация Nodeprep из RFC-3920 запрещает следующие коды: {0x22 0x26 0x27 0x2f 0x3a 0x3c 0x3e 0x40} (\" \& \' / : < > @).
Параметр -prohibitedCommand задаёт команду, вызываемую для каждого кода символа в отображённой и нормализованной строке. Если команда возвращает true, символ считается запрещённым. Этот параметр полезен, когда список для -prohibitedList слишком велик.
Параметр -prohibitedBidi принимает логическое значение; если оно равно true, применяются правила обработки двунаправленных символов, определённые в разделе 6 RFC-3454.
-
::stringprep::stringprep profile string
Выполняет для строки string операции stringprep, определённые в профиле profile. Результатом является подготовленная строка либо одна из следующих ошибок: invalid_profile (профиль profile не определён), prohibited_character (строка string содержит запрещённый символ) или prohibited_bidi (строка string содержит запрещённую двунаправленную последовательность).
-
::stringprep::compare profile string1 string2
Сравнивает две строки Unicode, подготовленные в соответствии с профилем stringprep profile. Команда возвращает 0, если подготовленные строки равны, -1, если string1 лексикографически меньше string2, или 1, если string1 лексикографически больше string2.
ПРИМЕРЫ
Определение профиля Nameprep (см. RFC-3491):
::stringprep::register nameprep -mapping {B.1 B.2} -normalization KC -prohibited {A.1 C.1.2 C.2.2 C.3 C.4 C.5 C.6 C.7 C.8 C.9} -prohibitedBidi 1
Определения профилей Nodeprep и resourceprep (см. RFC-3920):
::stringprep::register nodeprep -mapping {B.1 B.2} -normalization KC -prohibited {A.1 C.1.1 C.1.2 C.2.1 C.2.2 C.3 C.4 C.5 C.6 C.7 C.8 C.9} -prohibitedList {0x22 0x26 0x27 0x2f 0x3a 0x3c 0x3e 0x40} -prohibitedBidi 1
::stringprep::register resourceprep -mapping {B.1} -normalization KC -prohibited {A.1 C.1.2 C.2.1 C.2.2 C.3 C.4 C.5 C.6 C.7 C.8 C.9} -prohibitedBidi 1
ССЫЛКИ
«Подготовка интернационализированных строк („stringprep“)» (http://www.ietf.org/rfc/rfc3454.txt)
«Nameprep: профиль Stringprep для интернационализированных доменных имён (IDN)» (http://www.ietf.org/rfc/rfc3491.txt)
«Расширяемый протокол обмена сообщениями и присутствия (XMPP): ядро» (http://www.ietf.org/rfc/rfc3920.txt)
АВТОРЫ
Сергей Голован
Ошибки, идеи, отзывы
В этом документе и описываемом в нём пакете наверняка есть ошибки и другие проблемы. Пожалуйста, сообщайте о них в категории stringprep на сайте Tcllib Trackers. Также сообщайте о любых идеях по улучшению пакета и/или документации.
Предлагая изменения кода, пожалуйста, предоставляйте унифицированные различия, то есть вывод команды diff -u.
Обратите также внимание, что предпочтительнее прикреплять вложения, а не вставлять исправления непосредственно в текст. Вложения можно добавить, открыв форму Edit заявки сразу после её создания и нажав самую левую кнопку на дополнительной панели навигации.
СМ. ТАКЖЕ
АВТОРСКИЕ ПРАВА
Copyright © 2007–2009, Сергей Голован