Книга: Искусство программирования для Unix
Пример 7.1. Конвейер pic2graph
Пример 7.1. Конвейер pic2graph
(echo ".EQ"; echo $eqndelim; echo ".EN"; echo ".PS"; cat; echo ".PE")|
groff -e -p $groffpic_opts -Tps >${tmp}.ps
&& convert -crop 0x0 $convert_opts ${tmp}.ps ${tmp}.${format}
&& cat ${tmp}.${format}
Реализация программы pic2graph иллюстрирует то, как много способен сделать один конвейер, просто вызывая уже имеющиеся инструменты. Работа программы начинается с преобразования входных данных в соответствующую форму. Затем полученные данные обрабатываются groff(1) для создания PostScript-представления. На завершающей стадии PostScript конвертируется в растровое изображение. Все описанные детали скрыты от пользователя, который просто видит то, как в программу с одной стороны поступает исходный PIC-код, а с другой стороны из нее выходит растровое изображение, готовое для включения в Web-страницу.
Данный пример примечателен тем, что он иллюстрирует способность каналов и фильтров адаптировать программы для неожиданного применения. Программа, интерпретирующая PIC-код, pic(1), первоначально разрабатывалась только для внедрения диаграмм в форматированные документы. Большинство остальных программ в данной инструментальной связке были частью почти отжившей в настоящее время конструкции. Однако PIC остается удобным языком для нового применения, такого как описание диаграмм, встраиваемых в HTML-документы. Он получил право на существование, поскольку инструменты, подобные pic2graph(1), способны связывать все механизмы, необходимые для преобразования вывода утилиты pic(1) в более современный формат.
Программа pic(1) подробнее рассматривается в главе 8 при обсуждении конструкций мини-языков.
- 7.2.2.3. Учебный пример: pic2graph
- Пример установочного скрипта
- Пример из практики
- 8.5.2 Typical Condition Variable Operations
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Примеры получения статистики
- Пример применения метода «пять почему»
- Пример 12-8. Частота встречаемости отдельных слов
- 1.2.5. Пример программы
- Chapter 15. Graphical User Interfaces for Iptables
- Пример 17-10. Блочный комментарий
- Примеры