Создание электронных книг в формате FictionBook 2.1: практическое руководство (pre-release)
Шрифт:
Модификаторы
Модификаторы служат для изменения режимов работы регулярных выражений. Они вводятся в виде (?imsgr-imsgr). Если модификатор вписан после минуса — он отключается, если нет — включается. Модификаторы подвержены группировке (в Perl нет), можно применить модификатор для отдельного участка выражения (см. пример).
Модификаторы:
i — Регистро-независимый режим. Использует выбранный в ОС язык по умолчанию. По умолчанию выключено.
m — Воспринимать входной текст как многострочный, при этом метасимволы ^ и $ будут совпадать не только в начале и конце текста в целом, но и в начале
s — Воспринимать входной текст как одну строку. При этом метасимвол «.» совпадает с любым символом, если же этот модификатор выключен, то он не совпадает с разделителями строк (см.также Стандартные перечни символов). По умолчанию включено.
g — Включая его Вы переключаете все повторители в «жадный» режим. По умолчанию включено.
r — Модификатор предназначенный для русского языка. Если включен, то диапазоны вида а-я включают также букву «ё», А-Я включают «Ё», а а-Я включает вообще все русские буквы. По умолчанию включено.
Примеры группировки:
(?i)Saint-Petersburg — находит «Saint-petersburg» и «Saint-Petersburg»
(?i) — Saint-(?-i)Petersburg — находит «Saint-Petersburg» но не «Saint-petersburg»
(?i)(Saint-)?Petersburg — находит «Saint-petersburg» и «saint-petersburg»
((?i)Saint-)?Petersburg — находит «saint-Petersburg», но не «saint-petersburg»
Оговорка. В FB Editor модификаторы НЕ ФУНКЦИОНИРУЮТ.
Приложение E
Описание Base64
Этот алгоритм был разработан для представления произвольных последовательностей байтов в форму, читаемую для человека. Кодирующий и декодирующий алгоритмы очень просты, но закодированные данные примерно на 33% больше, чем некодированные. Этот метод идентичен тому, который используется в приложениях PEM (Privacy Enhanced Mail), описанной в RFC 1421 с одним отличием: base64 не приемлет встроенного «чистого» текста.
Base64 использует 65-символьный поднабор из US-ASCII, выделяя 6 бит на каждый печатный символ. (65-й символ «=» используется для обозначения функции спец. обработки).
Этот поднабор имеет важное свойство: он идентичен всем версиям языковой кодировки ISO 646, включая US ASCII, а также всем версиям EBCDIC. Другие популярные механизмы кодирования (uuencode, base85 — часть уровня 2 PostScript) не разделяют этих свойств и поэтому не удовлетворяют требованиям переносимости для двоичных данных электронной почты.
Процесс кодирования преобразует 3 входных символа в виде 24-битной группы, обрабатывая их слева направо. Эти группы затем рассматриваются как 4 соединенные 6-битные группы, каждая из которых транслируется в одиночный символ алфавита base64. При кодировании base64, входной поток байтов должен быть упорядочен старшими битами вперед.
Каждая 6-битная группа используется как индекс для массива 64-х печатных символов. Символ, на который указывает значение индекса, помещается в выходную строку. Эти символы выбраны так, чтобы быть универсально представимыми и исключают символы, имеющие специальное значение для SMTP-транспорта («.», CR, LF) и для синтаксиса вложенных тел MIME («-»).
Таблица: Алфавит Base64
Выходной
поток (закодированные байты) должен иметь длину строк не более 76 символов. Все признаки перевода строки и другие символы, отсутствующие в таблице 1, должны быть проигнорированы декодером base64. Среди данных в Base64 символы, не перечисленные в табл. 1, переводы строки и т.п. должны говорить об ошибке передачи данных, и, соответственно, почтовая программа должна оповестить пользователя о ней.Если в хвосте потока кодируемых данных осталось меньше, чем 24 бита, справа добавляются нулевые биты до образования целого числа 6-битных групп. А до конца 24-битной группы остается от 0 до 3-х недостающих 6-битных групп, вместо каждой из которых ставится символ-заполнитель «=». Поскольку весь входной поток представляет собой целое число 8-битных групп (т.е., просто байтных значений), то возможны лишь следующие случаи:
(1) входной поток как раз оканчивается 24-битной группой. В таком случае, выходной поток будет оканчиваться четырьмя символами Base64 без символа «=»;
(2) хвост входного потока имеет длину 8 бит. Тогда в конце выходного кода будут два символа Base64, с добавлением двух символов «=»;
(3) хвост входного потока имеет длину 16 бит. Тогда в конце выходного будут стоять три символа Base64 и один символ «=».
Т.к. символ «=» является хвостовым заполнителем, его появление в теле письма может означать только то, что конец данных достигнут. Но такой гарантии нет, если число переданных битов кратно 24.
Любые бессмысленные последовательности в коде Base64 вроде «=====» должны быть игнорированы.
Основано на:
Спецификация RFC 1521 «MIME — Multipurpose Internet Mail Extensions. Part one.»
Приложение Ж
Описание стандарта ISBN
Международное агентство ISBN присваивает идентификатор группы, который обозначает либо группу стран (например, 0 — для англоязычных стран: Великобритании, США, Австралии, Канады, Ирландии и других), либо отдельную страну (например, 933 — для ШР). Количество цифр в идентификаторе группы зависит от годового объема книжной продукции страны.
Идентификаторы группы устанавливается международным агентством ISBN в следующих диапазонах чисел:
0–7
60–94
950–997
9980–9989
99900–99999
<...>
1.1. Международный стандартный номер книги — универсальный идентификационный код, проставляемый на книгах и брошюрах.
1.2. В соответствии с ГОСТ 16447-70 «Издания. Термины и определения основных видов» книга — непериодическое текстовое издание объемом свыше 48 страниц, брошюра — непериодическое текстовое издание объемом свыше четырех, но не более 48 страниц.
<...>
3.1. Международный стандартный номер книги состоит из аббревиатуры ISBN (независимо от языка издания книги или брошюры), и 10 цифр.
3.2. Дня обозначения цифровой части ISBN применяется арабские цифры от 0 до 9. Последняя цифра ISBN - контрольная — может быть римской цифрой X, используемой для обозначения числа 10.
3.3. Цифровая часть ISBN состоит из четырех групп цифр, содержащих различное количество цифровых знаков, отделяемых друг от друга дефисом.