В настоящий пакет входят таблицы для преобразования фрагментов греческих и церковнославянских модулей в формате инвариантного представления HIP (автор М.Гринчук), обозначенных в "Цитате" соответственно @HIPgrk и @HIPslv. На данный момент существуют следующие модули к "Цитате", выполненные на этих языках:
Помимо преобразования, не рассчитанного на использование определённых шрифтов (транскрипция, греческая кодовая страница, подстановочные знаки для Web), таблицы обеспечивают перекодировку под конкретные шрифты/ группы шрифтов. В этом случае текст отображается в окне ClipBoardQuote в выбранном шрифте (если тот, конечно, установлен на вашем компьютере), хотя копирование осуществляется в текстовом формате. Если найдено несколько шрифтов, соответствующих данной таблице, в раскрывающийся список будут внесены они все. По сути, вы выбираете не кодировку, а шрифт (правда, это относится только к просмотру, а не к экспорту текста).
Таблицы приведены в упрощённом виде и не поддерживают систему HIP-9 в полном объёме, ориентируясь прежде всего на её реализацию в модулях к "Цитате из Библии". Надстрочники даны только для символов нижнего регистра.
Как видно из входящих в пакет примеров, подобные таблицы легко составить самостоятельно - как для HIP, так и для других языков (например, перевод греческих текстов с "составными" диакритическими знаками под шрифт Greek или греческую кодовую страницу). Их структура аналогична таблицам, привязанным к кодовой странице, и описана в соответствующем разделе справки ClipBoardQuote. Имеются, однако, дополнительные нюансы.
В отличие от "кодировочных" таблиц, "языковые" помимо списка замен могут включать также следующие команды (символ > в начале строки):
Для следующих команд значимым является место их расположения в таблице (напоминаем, что замены и команды выполняются в порядке чтения программой таблицы "сверху вниз"):
Recoder
В настоящее время пакет является, по сути, самостоятельным программным продуктом, интегрируемым с CBQ. Файл Recoder.exe позволяет значительно расширить возможности использования входящих в него таблиц. С его помощью можно:
- осуществлять перекодировку файлов, как по одному, так и группами, а также целых папок, в том числе и заархивированных;
- создавать файлы, содержащие форматированный текст (если соответствующая разметка содержится в файлах-исходниках) - в форматах HTML, RTF и пользовательских;
- обрабатывать документы, включающие несколько языковых режимов, задавая для каждого собственную таблицу;
- дополнять таблицы мультизамены пользовательскими сценариями на основе VBScript.
Открывать файлы в программе можно двумя способами:
1. Запустив программу, выбрать нужный файл, затем в верхнем раскрывающемся списке - язык, а в списке таблиц для данного языка - нужную таблицу. После этого в нижнем раскрывающемся списке можно указать объект обработки - выбранный ранее файл, все файлы содержащей его папки (без вложенных подкаталолгов) или файлы из этой папки по выбору. В последнем случае после нажатия кнопки "ОК" или двойного щелчка по имени таблицы в списке будет дополнительно предложено выбрать нужные файлы с возможностью просмотра их содержимого и фильтрации их по типу.
(Логика "выбрать файл - обрабатывать папку", возможно, несколько непривычна, зато позволяет избежать как лишнего в большинстве случаев нажатия клавиши, так и использования нестандартных элементов управления)
Если на диалоговом окне выбора файлов нажать кнопку "Отмена", то программа будет обрабатывать текст из буфера обмена. Нижний список в этом случае не отображается.
2. Можно перетащить выделенный файл, группу файлов или папку на значок программы либо передать их ей через путь контекстного меню SendTo. При этом, если отправленный объект - папка, то будет предложено сперва уточнить состав обрабатываемых файлов, а лишь затем выбрать язык и таблицу. Если программе передаётся выделенная группа файлов, то дополнительных опций, как и при варианте обработки текстаиз буфера обмена, не предлагается. В обоих случаях нижний раскрывающийся список под списком таблиц отображаться не будет.
Ярлык на Recoder в папке SendTo обновляется каждый раз при запуске программы с помощью файла Shortcut.vbs. который можно модифицировать.
Просмотреть отмеченную в списке таблицу можно с помощью контекстного меню, вызываемого правой кнопкой "мыши". Текущие настройки можно сохранить как используемые по умолчанию.
Recoder создаёт в той же папке новый(-е) файл(ы) с расширением, указанным в таблице или определяемым по её имени. Если расширения исходного и нового файла совпадают, к имени файла добавляется "1", если нет, то имена файлов будут отличаться только расширениями. Если обрабатывался текст из буфера обмена, то файл создаётся в папке "Мои документы" с именем "Recod" и расширением, соответствующим таблице.Если создан один файл, то он откроется в программе, ассоциированной с данным файловым типом, если группа файлов, то будет открыта содержащая их папка.
Расширенный синтаксис таблиц
Замены и команды, которые должны читаться только Recoder'ом, но не CBQ, начинаются с последовательности символов "// * ". Recoder же читает все команды CBQ, поэтому если какому-то параметру необходимо задать разные значения для разных программ, то значения для Recoder'а задавайте выше.
Специальные команды для Recoder'а, которых не поддерживает ClipboardQuote:
>Extent xxx, где xxx - расширение нового файла (с точкой или без). Если параметр не задан, то для шрифтовых таблиц ("с процентами") он будет определён как htm, для остальных - txt.
>FontFace xxxx, где xxxx - имя шрифта (для форматированного текстового файла). Если параметр не указан, а имя таблицы содержит одно или несколько названий шрифтов (строка, оканчивающаяся на % и не содержащая !), то он принимает значение первого из них.
>EOL2 - слияние строк в абзацы, разделителями которых служит пропущенная строка в исходном файле. Для языков, начинающихся с HIP, это значение устанавливается по умолчанию.
>NotEOL2 - отмена предыдущего (например, для языков, начинающихся с HIP).
Многоязыковой режим
Схема для многоязыкового документа задаётся в файлах по маске R@*.txt, размещённых в каталоге с программой. См. R@HIP polyglott.txt. Указываются находящиеся в исходных файлах маркеры языковых режимов и через " == " - путь к соответствующим таблицам. При этом путь может быть задан как к папке (тогда он обязательно должен оканчиваться обратным слэшем: @HIPslv\, @HIPgrk\), так и к конкретному файлу (Addit\HIPrusUTF8.txt, Addit\HIPlatUTF8.txt). Если указана папка, то выбрать нужный файл будет предложено в ходе выполнения программы. Параметр Default задаёт режим по умолчанию. В файлах R@*.txt он должен идти первым (вернее, до объявления данного режима).
В списке языков (верхний раскрывающийся список) названия многоязыковых схем начинаются с "?". При выборе такого пункта справа появляется дополнительный список, в который вынесены все маркеры режимов, путь для которых указан к папке. Выбор каждого из них обновляет таблицы из соответствующей ему папки в главном списке. После этого следует указать конкретную таблицу для каждого режима.
Просмотреть содержимое выбранного файла R@*.txt можно двойным щелчком на списке маркеров режима.
Пользовательские форматы
Для создания конечных файлов в форматах, отличных от HTML и RTF, следует создать вложенную папку format, в которой разместить файлы [расширение формата без точки].txt , содержащие шаблоны форматов с масками: [%Файл] - содержимое файла, [%CharSet] - кодовая страница, [%FontFace] - имя шрифта, [%FontSize] - размер шрифта. Если данный формат предполагает специальное обозначение абзаца (перехода строки), то файл должен начинаться с !!, а затем до конца строки - тэг абзаца для замены. Если он должен включать физический разрыв строки, то последний обозначается [%p]. Например: !![%p]\n
В файл files.txt можно добавить маски открываемых файлов по указанному образцу для формата HIP.
Работа с архивами
При первом открытии программой файлов с расширениями .zip и .rar она предложит указать путь к соответствующему консольному архиватору, который при удачной распаковке пропишет в реестр для дальнейшего использования.
Чтобы использовать архивы других типов, следует создать файл Arch.txt и прописать в нём параметры для архива каждого типа: с новой строки расширение без точки и через пробел нужную последовательность команд и ключей (без имени архиватора!). Исходный архив (вернее, его копия в корневом каталоге) обозначается тэгом %file%, путь назначения - %path%. По умолчанию будет распаковано в папку Recod\[имя_архива]\ . Это можно изменить, задав свой путь - %path=[ПОЛНЫЙ_путь]%. Чтобы иметь возможность изменить параметры распаковки в процессе выполнения программы, перед ними (после расширения и пробела) можно поставить вопросительный знак (например "rar ?x -o+ %file% %path%") - тогда будет предложено принять ключи, указанные по умолчанию, или изменить их. Путь к самому архиватору, как и для .zip / .rar , записывается в системный реестр при первой удачной распаковке.
Если указать в Arch.txt параметры для форматов .zip и .rar, то они будут "перехватывать" ключи, заданные по умолчанию.
Действия программы с распакованным архивом аналогичны работе с папкой.
Поддержка сценариев
Для использования пользовательских сценариев ("скриптов"), с помощью которых можно выполнять юолее сложные, не сводимые к последовательности сквозных замен, преобразования, следует скачать дополнение к пакету scrpt.zip и извлечь содержащиеся в нём файлы и папку в каталог CBQ с заменой файла recoder.exe.
Сценарии должны находиться в папке Scripts и представлять собой текстовый файл с любым расширением. Язык - VBScript. Они могут включать несколько процедур и функций, но главная обязательно должна быть названа Sub Main().
Текст, передаваемый из Recoder'a скрипту для обработки, обозначается как x, причём это не переменная, а функция, результат которой для дальнейших операций должен быть присвоен другой переменной. Recoder'у конечный результат обработки текста скриптом возвращается функцией Send(), которая должна идти последней, так как ею одновременно программа "cнимается с паузы".
Кроме стандартных операторов и функций VBS в скриптах могут использоваться функции Recoder'а:
- Перевод числа в славянскую, греческую или римскую запись: соответственно ToSlv(), ToGrk(), ToRom(), где первым аргументом идёт число, а вторым, необязательным - опция преобразования. Если в качестве второго аргумента указывается любое число, отличное от нуля, то переводимое число будет дополнительно обработано текущей таблицей мультизамены.
- Обработка текста указанной таблицей мультизамены - Table(текстовый аргумент, путь к таблице от каталога Recoder'а).
Ссылки на скрипты прописываются в таблицах мультизамены и бывают четырёх типов:
>Script xxxx - Скрипт в файле xxxx выполняется всегда в порядке чтения таблицы.
>Script0 xxxx - Не выполняется в многоязыковом режиме.
>Script1 xxxx - Выполняется один раз, перед форматированием документа.
>Script2 xxxx - Выполняется один раз - после форматирования документа перед добавлением описательной метачасти.
Для пользовательских форматов Script2 может быть также прописан в файле описания формата - [%Файл:имя_скрипта].
Находящийся в дополнительном пакете скрипт "Сноски.txt", ссылка на который содержится в таблице @HIPslv\! Ucs%!Ucs8%.txt, выносит на поля сноски Web-UCS документа, которые без него отображаются "сереньким в тексте", как и (спец)комментарии.
ClipboardQuote, начиная с версии 2.62, умеет выполнять в урезанном объёме сценарии Рекодера (по команде scr Имя_файла.txt), принимая в качестве аргумента (выделенный) текст окна программы и возвращая в окно результат. Вернее, выполняется отдельным потоком временно создаваемый .vbs-файл, в который встраивается содержимое сценария и процедуры обмена данными. Поэтому будут работать только сценарии, содержащие базовые функции VBS, без функций Рекодера.
Клавишей F1 при активном окне Recoder'а вызывается эта страница
Свежие версии пакета выкладываются на http://pharisai.at.ua/arch/spez.zip.
Дополнение для работы со сценариями http://pharisai.at.ua/arch/scrpt.zip.
Некоторые из использованных шрифтов - http://pharisai.at.ua/fonts.zip.