КОНФЕРЕНЦИЯ МОЛОДЫХ УЧЕНЫХ, ПОСВЯЩЕННАЯ 10-ЛЕТИЮ ИВТ СО РАН

25-26 декабря 2000 года, Новосибирск, Академгородок, ИВТ СО РАН

Тезисы докладов


Информационные технологии

Использование текстовых редакторов для генерации HTML

Федотов А.А.

Институт вычислительных технологий СО РАН (Новосибирск)

На многих профессиональных сайтах можно увидеть надпись made by Notepad.exe. Конечно, это не совсем точно – большая часть работы по дизайну сайта делается в графическом редакторе. Тем не менее данное замечание во многом отражает положение дел в области автоматизации написания HTML. Несмотря на наличие визуальных средств разработки, подобных Visual C или Delphi, большая часть работы в веб-программировании выполняется в текстовом редакторе, который, правда, часто оснащен контекстной подсветкой и помощью, автодополнением тэгов, расширенным поиском и заменой в нескольких файлах, возможностью просмотра результата в броузере и добавления готовых элементов дизайна из подключаемых библиотек. Таким продуктом является, например, Homesite фирмы Allaire, которому в октябре 1999 года отдали предпочтение 52% разработчиков. Невозможно обойти вниманием и тот факт, что при разработке новой версии Microsoft FrontPage, входящего в пакет MS Office 2000, крупнейшая фирма в области программного обеспечения учла опыт Allaire и отказалась от автоматизации большого количества задач, стоящих перед веб-программистом, заслужив тем самым немало положительных откликов.

Итак, какой бы редактор вы не использовали – Homesite, Emacs, TextPad или Ultraedit, главное, чтобы он был для вас привычен, то есть чтобы ваши пальцы знали, как записать файл, и как включить word wrap. Практически любой современный текстовый редактор имеет ненамного меньшие возможности. Первым тезисом будет утверждение, что лучшая среда разработки – привычная среда. Действительно, основным ограничением, накладываемым на разработку любого уникального технологического продукта, например, оригинального веб-сайта, является время. То есть требуется изготовить что-то приемлемого качества, по приемлемой цене и как можно быстрее. Времени не хватает всегда. Именно поэтому часто привычная среда разработки выигрывает у специализированных.

Далее речь пойдет о том, как сделать обычный текстовый редактор, более удобным для выполнения некоторого класса задач, встречающихся в написании HTML. К выбору таких задач надо подходить достаточно осторожно – ведь основное требование, чтобы затраченное время и усилия не превысили получаемый выигрыш. Складывается впечатление, что если бы сайт не требовал никакой поддержки, то любое количество затрачиваемых на автоматизацию усилий никогда бы не окупилось. Но вот при переработке сайта, особенно с учетом все новых и новых требований заказчика, достаточно много усилий занимает переделка однотипных элементов. С помощью поиска в файлах даная работа может быть существенно облегчена. Писать шаблона для выполнения подобной замены достаточно трудоемко и неэффективно. Более эффективный способ решения данной задачи предлагает следующая программа.

<SCRIPT TYPE="text/uemacro"> Find Up "<!--&beg&-->" Key HOME Find RegExp "<!--&beg&-->^p<!--&*&-->$" Replace All "" Find RegExp "<!--&beg&-->^p*<!--&end&-->$" Replace All "" Find RegExp "%^(<!--&*&-->^)$" Replace All "^1<!--&beg&-->^p^1" Find RegExp "%<!--&add button&^([~&]+^)&^([~&]+^)&^([~&]+^)&-->$" Replace All "<A HREF="javascript: &#39;Please, do not open the link in a New Window&#39;" onClick="^1; return false;" onMouseOver="self.status=&#39;^2&#39;; return true;">^3</A><!--&end&-->" </SCRIPT>

Данная макрокоманда для редактора Ultraedit работает следующим образом. Сначала она удаляет следы своей прошлой деятельности, если такие существуют. Затем она расширяет приведенное внутри комментария описание до кнопочки-ссылки, то есть такой кнопочки, при нажатии на которую вызывается данная функция. Параметры операции add button – имя вызываемой функции, надпись в строке статуса при наведении мышки на кнопочку, а также сама надпись на кнопочке. Например, описание, приведенное ниже

<!--&add button&test()&testing&test&--> расширяется до следующей: <!--&add button&test()&testing&test&--><!--&beg&--> <A HREF="javascript: &#39;Please, do not open the link in a New Window&#39;" onClick="test(); return false;" onMouseOver="self.status=&#39;testing&#39;; return true;">test</A><!--&end&-->

Теперь, если надо изменить способ вывод кнопочки, то это легко можно сделать, поменяв макрокоманду в одном месте и перегенерировав текст. Я не рассказываю в подробностях, как писать такую макрокоманду. Если Вы не знаете ничего, запишите ее кнопочкой Record Macro. И совсем замечательно, если Вы работали с регулярными выражениями. Тогда Вы сможете записать любое необходимое преобразование парой наглядных строк. Мне хочется закончить сравнением этого простого трюка с имеющимися известными технологиями генерации HTML.

Также укажем некоторые подводные камни, которые ждут любителя обустраивать свой редактор. В заключение, мне бы хотелось пожелать каждому программисту, собравшемуся облегчить себе жизнь универcальной конструкцией, вспомнить про макрокоманды и KISS-принцип.

Примечание. Тезисы докладов публикуются в авторской редакции



Ваши коментарии
Обратная связь
[ICT SBRAS]
[Головная страница]
[Конференции]

© 1996-2000, Институт вычислительных технологий СО РАН, Новосибирск
© 1996-2000, Сибирское отделение Российской академии наук, Новосибирск
Дата последней модификации 06-Jul-2012 (11:52:48)