![]() |
Последнее обновление: 31.01.2009 | |
Утилита xMarkup предназначена для выполнения процедур строковых преобразований в множестве текстовых файлов (смотри Руководство пользователя). Ядро утилиты реализовано в виде консольного приложения для Windows 9x/NT/2K/XP/2003 и написано на языке Icon.
Так как использование командной строки имеет очевидные неудобства, впоследствие был разработан графический интерфейс, который максимально упрощает и делает наглядным весь процесс работы с утилитой. Кроме того в графический интерфейс были добавлены многие другие полезные функции. Графический интерфейс разработан в среде Delphi 7.
Интегрирование с внешним текстовым редактором Notepad++ обеспечивает пользователя удобной средой разработки (IDE), которая позволяет редактировать файл правил обработки с подсветкой синтаксиса и использованием опции авто-завершения набираемого текста. При желании вместо Notepad++ можно использовать любой другой аналогичный редактор. Например, MyDevStudio или WinPad XP.
Реализована интеграция с внешней программой сравнения файлов WinMerge, которая позволяет визуально анализировать изменения, сделанные в результате обработки исходных файлов. При желании вместо WinMerge можно использовать любую другую аналогичную программу. Например, KDiff3.
Реализована опция проверки валидности заданных процедурных макросов, что позволяет значительно ускорить и облегчить процесс их отладки.
Реализована возможность копирования экранного вывода утилиты в выходной файл.
Реализована возможность сохранения всех настроек и параметров текущей сессии работы с программой, если в последующем требуется быстро повторить обработку исходных данных.
Разработка графического интерфейса осуществлялось в рамках проекта МНТЦ #3361р. Участие в этом проекте оказалось возможным благодаря поддержке Владимира Литвинова (litvinov@snezhinsk.ru), технического редактора Русской Виртуальной Библиотеки.
В составе графического интерфейса использована компонента TmFileScan, разработанная Mats Asplund, MASoft. С помощью этой прекрасной компоненты реализован режим поиска исходных файлов.
Версия 2.0, апрель 2007
Выпущена начальная версия графического интерфейса утилиты. Для согласования с номером версии консольного ядра ей присвоен номер 2.0
Версия 2.0.1, июль 2007
Исключена операция сохранения файла параметров при включенной опции автосохранения, если он на самом деле не изменялся.
Версия 2.1.0, октябрь 2007
Добавлена возможность задания оформления консольных и рабочих окон на вкладке Установки.
Версия 2.1.1, апрель 2008
Изменения, связанные с расширением функциональности консольного ядра утилиты:
@include.Версия 2.1.2, май 2008
Изменения, связанные с фиксацией ошибок в консольном ядре.
Версия 2.1.3, сентябрь 2008
Простая алфавитная сортировка списка обрабатываемых файлов заменена сортировкой с учетом иерархии путей. В верх списка обрабатываемых файлов добавлена панель, нажатие на которую изменяет порядок сортировки.
Версия 2.1.4, январь 2009
Восстановлен режим сохранения выходных файлов с добавлением к их имени префикса "xm$". На закладке "Помощь" добавлена ссылка к домашней страничке загрузки программы.
Процесс работы с графическим интерфейсом утилиты xMarkup заключается в следующей последовательности действий:
При этом пользователь может всегда быть спокойным насчет оригиналов исходных файлов - утилита НИКОГДА их не изменяет! Результирующие файлы копируются в заданную выходную папку или создаются рядом с оригиналами, но с префиксом "xm$" в имени. По умолчанию установлен режим, в котором выходные файлы вообще не создаются.
Графический интерфейс утилиты xMarkup представляет собой главное окно, имеющее закладки для перехода на различные функциональные страницы приложения. Ниже приводится описание этих страниц.
При старте приложения эта страница открывается первой. На данной странице формируется список исходных файлов, которые требуется обработать.

Страница содержит следующие компоненты:
Добавление файлов к списку может осуществляться многократно, при этом по умолчанию список автоматически сортируется. Добавление файлов к списку в режиме поиска может быть прервано нажатием клавиши [Esc] или вводом Ctrl-C.
Навигация по списку обрабатываемых файлов и выделение его элементов делается стандартным для Windows образом - с помощью мыши или клавиш. Двойной щелчок мыши по выделенному файлу или нажатие клавиши [Enter] вызывает его открытие. Нажатием клавиши [Del] выделенный файл(ы) удаляются из списка. При нажатии правой кнопки мыши активизируется контекстное меню:
Пункты контекстного меню "Сравнить", "Открыть Результат", "Править Результат" активны только при условии, если при обработке исходного файла был создан выходной файл (результат).
При старте обработки в статусной строке высвечивается прогресс-индикатор с отсчетом затраченного времени и в нижнем окне отображается консольный вывод утилиты (задание его режимов осуществляется на странице Результаты).

Процесс обработки может быть всегда прерван нажатием на кнопку [Stop] или вводом Ctrl-C.
На этой странице задаются необходимые установки пользовательского интерфейса.

Страница содержит следующие компоненты:
Файлы, которые явно открываются из тела макро-процедур в процессе обработки, например:
procedure initialize
in := open("infile.txt", "r")
out := open("outfile.txt", "w")
...
t := get_content("infile.txt")
end
по умолчанию читаются/создаются по пути, заданному рабочей папкой. Естественно, если явно задать полные пути к файлам, то они могут размещаться в любом месте. Сказанное также справедливо для макропределения @read(file).
Следует отметить, что результаты обработки, формирующиеся из исходных файлов, всегда сохраняются в заданной выходной папке (см. следующий раздел).
На этой странице задаются опции экранного вывода и параметры сохранения результатов обработки.

Страница содержит следующие компоненты.
Опции экранного вывода:
Параметры сохранения выходных файлов, образующихся в результате обработки исходных файлов:
На этой странице задаются правила обработки исходных файлов.

Страница содержит следующие компоненты:
Так редактирование списков маркеров и шаблонов замен в табличной форме может быть неудобным, рекомендуется для этого использовать внешний редактор (см. пункт 5).
На этой странице задаются различные опции обработки исходных файлов. Назначение данных опций детально описано в руководстве по утилите xMarkup.

Страница содержит следующие компоненты.
Параметры внутренних счетчиков утилиты xMarkup:
Дополнительные опции обработки:
На этой странице задаются процедурные макросы, используемые в текущих правилах обработки.

Страница содержит следующие компоненты:
@include включения текста из внешнего файла, то открыть этот файл на редактирование можно двойным щелчком мыши по строке директивы.
На этой странице приводятся copyright программы и ссылки к необходимым разделам документации.

Утилита xMarkup поддерживает интеграцию с любым внешним редактором, который может использоваться для быстрого просмотра или редактирования обрабатываемых файлов и правил обработки. Если в вашей системе установлен редактор Notepad++, то он используется по умолчанию как внешний редактор. Назначение другого внешнего редактора задается на странице Установки.
При загрузке файла правил обработки (тип .par или .xm) в окно редактора Notepad++ автоматически осуществляется подсветка синтаксиса, например:

При нажатиии комбинации клавиш Ctrl+Space активизируется функция авто-завершения ввода, с помощью которой можно выбрать требуемую синтаксическую конструкцию файла правил - имя макроопределения или функции. При нажатии Ctrl+Space в процессе ввода строки осуществляется автоматический поиск имени конструкции, начинающегося введенной строкой.
При сохранении сделанных изменений и возврате к окну утилиты xMarkup автоматически выводится диалоговое окно, предлагающее перезагрузить текущий файл параметров, чтобы учесть эти изменения:

Утилита xMarkup поддерживает интеграцию с внешней программой сравнения файлов, с помощью которой можно визуально сравнивать исходный файл с результатом его обработки. Если в вашей системе установлена программа WinMerge, то она используется по умолчанию как внешняя программа сравнения файлов. Назначение другой внешней программы сравнения файлов задается на странице Установки. При этом нужно иметь ввиду, чтобы данная программа поддерживала следующий синтаксис командной строки запуска:
имя-программы файл-1 файл-2
Для выполнения операции сравнения необходимо после завершения обработки выбрать требуемый исходный файл в списке, нажать правую кнопку мыши и выполнить команду Сравнить. Сравнение возможно только в том случае, если на странице Результаты был задан какой-либо режим создания выходных файлов.
В этой главе описано как отлаживать процедурные макросы.
В этом режиме "вылавливаются" грубые синтаксические ошибки с помощью компиляции заданных макросов стандартным Icon-компилятором. При этом следует помнить, что Icon-компилятор может посчитать валидными многие выражения, которые дадут сбой только во время выполнения. Эта особенность вызвана тем обстоятельством, что Icon не использует жестко типизированных переменных и не проверяет существования вызываемых функций и процедур на этапе компиляции.
Режим тестовой компиляции задается нажатием кнопки [Тест.Компил.] в окне [Макросы]. Ниже приведен пример выходного листинга компиляции:

В данном случае в шестой строке
t := tower(@body
пропущена правая закрывающая скобка из-за чего конструкция "if-then" в следующей строке была также не распознана.
В этом режиме осуществляется проверка выполнения каждого выражения макро-кода с помощью эмуляции Run-time режима. Запуск режима выполняется нажатием кнопки [Тест.Прогон] в окне [Макросы]:

В данном случае в строке
t := tower(@body)
возникла Icon Run-time ошибка 106, вызванная тем, что строка tower не распознана как имя объявленной процедуры (правильное имя - lower). Описание всех возможных Run-Time ошибок можно найти в приложении G (стр.319) книги Icon Programming Language.
В этом режиме можно проследить по шагам реальный процесс обработки исходных файлов. Чтобы попасть в режим отладки нужно выбрать опцию [Режим Отладки] в окне [Результаты] и запустить обработку:

После каждого шага обработки (т.е. поиска и трансформации очередного элемента текста) утилита делает останов, ожидая ввода от пользователя. В консольном окне требуется ввести номер варианта ответа (1-3) и нажать возврат каретки:
| © Сергей Логичев,
1999-2008 |
||