Mercurial > hg > tema
view misc/manual-ru-old/index.html @ 6:cd9190c5e7e8
Fixed paths.
author | Mikhail Kryshen <mikhail@kryshen.net> |
---|---|
date | Fri, 07 Nov 2008 02:28:54 +0300 (2008-11-06) |
parents | 6c41a0b43e58 |
children |
line wrap: on
line source
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> <html> <head> <title>МакропроцеÑÑор TEMA</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <h1>МакропроцеÑÑор TEMA</h1> <p>МакропроцеÑÑор TEMA обрабатывает заданные шаблоны текÑтовых файлов и заменÑет найденные в них инÑтрукции на результаты их выполнениÑ. </p><p> ОÑобенноÑти: </p> <ul> <li>РаÑширÑемоÑть: возможно динамичеÑки подключать новые функии, реализованные в виде клаÑÑов на Java.</li> <li>Работа Ñ Ð±Ð°Ð·Ð°Ð¼Ð¸ данных: иÑпользование SQL-запроÑов Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ….</li> <li>ÐŸÐ¾Ñ‚Ð¾Ñ‡Ð½Ð°Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ° данных: инÑтрукции обрабатываютÑÑ Ð¿Ð¾ мере Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ñ‚ÐµÐºÑта без необходимоÑти загрузки файла в оперативную памÑть и Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ ÑинтакÑичеÑкого разбора.</li> </ul> <p><b>Формат инÑтрукций</b></p> <blockquote> <code><%<i>ÑпиÑок_функций</i>{:|\|`}<i>данные</i>%></code> </blockquote> <p> где<br /> <code><i>ÑпиÑок_функций</i></code> - ÑпиÑок имен функций, разделенных пробелами. Может быть пуÑтым.<br /> <code><i>данные</i></code> - данные, передаваемые функции. </p> <p><b>Формат данных</b></p> <blockquote> <code> [<i>ÑпиÑок_аргументов</i>][<i>текÑÑ‚</i>] </code> </blockquote> <p> где<br /> <code><i>ÑпиÑок_аргументов</i></code> - ÑпиÑок аргументов функции, разделенных пробелами. Может быть пуÑтым.<br /> <code><i>текÑÑ‚</i></code> - текÑÑ‚, передаваемый функции без Ñ€Ð°Ð·Ð±Ð¸ÐµÐ½Ð¸Ñ Ð½Ð° аргументы. Может быть пуÑтым. КоличеÑтво аргументов, поÑле которого Ñледует текÑÑ‚, завиÑит от функции. </p><p> Разделитель между ÑпиÑком функций и данными определÑет, как должны обрабатыватьÑÑ Ð´Ð°Ð½Ð½Ñ‹Ðµ функции: </p><p> <code>:</code> - рекурÑÐ¸Ð²Ð½Ð°Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ°,<br /> <code>\</code> или <code>`</code> - передать без обработки. </p><p> ЕÑли в ÑпиÑке функций задано две и более функции, они выполнÑÑŽÑ‚ÑÑ, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð¿Ð¾Ñледней, так что ÐºÐ°Ð¶Ð´Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ð¾Ð»ÑƒÑ‡Ð°ÐµÑ‚ в качеÑтве данных результат Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñледующей функции. </p><p> ÐšÐ°Ð¶Ð´Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸Ð¼ÐµÐµÑ‚ код возврата - целое чиÑло. Код возврата инÑтрукции - код возврата первой в ÑпиÑке функции. Код возврата, получаемый при обработке текÑта - Ñумма кодов возврата обработанных инÑтрукций (как правило, ÑмыÑл Ñтого Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ - количеÑтво инÑтрукций, замененных на непуÑтой текÑÑ‚). </p><p> Кроме Ñкобок '<', '>', можно иÑпользовать Ñкобки '[', ']'. </p> <h2>Функции</h2> <p><code><b>set</b></code></p> <table> <tr><td>Ðргументы:</td> <td><i>имÑ</i></td></tr> <tr><td>ТекÑÑ‚:</td> <td><i>значение</i></td></tr> <tr><td>ДейÑтвие:</td> <td>УÑтанавливает значение переменной <i>имÑ</i>.</td></tr> <tr><td>Результат:</td> <td><i>имÑ</i></td></tr> <tr><td>Код возврата:</td> <td>1</td></tr> </table> <p><code><b>define</b></code></p> <table> <tr><td>Ðргументы:</td> <td><i>имÑ</i></td></tr> <tr><td>ТекÑÑ‚:</td> <td><i>шаблон</i></td></tr> <tr><td>ДейÑтвие:</td><td>ОпределÑет новую функцию <i>имÑ</i>, при вызове которой обрабатываетÑÑ <i>шаблон</i>. При обработке доÑтупны функции <code>nextarg</code> Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¾Ñ‡ÐµÑ€ÐµÐ´Ð½Ð¾Ð³Ð¾ аргумента вызываемой функции и <code>data</code> Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñ‚ÐµÐºÑта.</td></tr> <tr><td>Результат:</td> <td><i>имÑ</i></td></tr> <tr><td>Код возврата:</td> <td>1</td></tr> </table> <p><code><b>load</b></code></p> <table> <tr><td>Ðргументы:</td> <td><i>имÑ</i> <i>имÑ_клаÑÑа</i></td></tr> <tr><td>ДейÑтвие:</td> <td>ОпределÑет новую функцию <i>имÑ</i>. Ð ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ определена Java-клаÑÑом <i>имÑ_клаÑÑа</i>, наÑледующим клаÑÑ <code>kryshen.tema.Function</code>.</td></tr> <tr><td>Результат:</td> <td><i>имÑ</i></td></tr> <tr><td>Код возврата:</td> <td>1</td></tr> </table> <p><code><b>prepare</b></code></p> <table> <tr><td>Ðргументы:</td> <td><i>имÑ</i></td></tr> <tr><td>ТекÑÑ‚:</td> <td><i>запроÑ</i></td></tr> <tr><td>ДейÑтвие:</td> <td>Подготавливает SQL-Ð·Ð°Ð¿Ñ€Ð¾Ñ <i>запроÑ</i> Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ, запиÑывает подготовленный Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð² переменную <i>имÑ</i>.</td></tr> <tr><td>Результат:</td> <td><i>имÑ</i></td></tr> <tr><td>Код возврата:</td> <td>1</td></tr> </table> <p><code><b>query</b></code></p> <table> <tr><td>Ðргументы:</td> <td><i>имÑ_запроÑа</i> <i>шаблон</i> <i>парам1</i> ... <i>парамN</i></td></tr> <tr><td>ДейÑтвие:</td> <td>ВыполнÑет Ð·Ð°Ð¿Ñ€Ð¾Ñ Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸, подготовленный Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ функции prepare. Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð² подÑтавлÑÑŽÑ‚ÑÑ Ð² Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð²Ð¼ÐµÑто Ñимвола '?'. Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÐµÐ¹ ответа доÑтупны Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ функции <code>db</code>, как переменные шаблона <i>шаблон</i>. При обработки шаблона также определÑетÑÑ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ <code>number</code>, ÑÐ¾Ð´ÐµÑ€Ð¶Ð°Ñ‰Ð°Ñ Ð½Ð¾Ð¼ÐµÑ€ текущей Ñтроки ответа.</td></tr> <tr><td>Результат:</td> <td>результат обработки шаблона <i>шаблон</i> Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ Ñтроки ответа.</td></tr> <tr><td>Код возврата:</td> <td>КоличеÑтво полученных Ñтрок ответа.</td></tr> </table> <p><code><b>optional</b></code></p> <table> <tr><td>ТекÑÑ‚:</td> <td><i>данные</i></td></tr> <tr><td>Результат:</td><td><i>данные</i>, еÑли при обработке данных был получен код возврата отличный от 0, иначе - пуÑÑ‚Ð°Ñ Ñтрока.</td></tr> <tr><td>Код возврата:</td> <td>1, еÑли результат - пуÑÑ‚Ð°Ñ Ñтрока, 0 - иначе.</td></tr> </table> <p><code><b>image</b></code></p> <table> <tr><td>Ðргументы:</td> <td><i>иÑÑ…_файл</i> <i>кон_файл</i> <i>формат</i> [<i>макÑ_ширина</i> [<i>макÑ_выÑота</i>]]</td></tr> <tr><td>ДейÑтвие:</td> <td>Загружает изображение из файла <i>иÑÑ…_файл</i> (путь определÑетÑÑ Ð¾Ñ‚Ð½Ð¾Ñительно конфигурационного параметра "resource_base") и преобразует его в указанный формат, ÑохранÑÑ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚ в <i>кон_файл</i>. ЕÑли заданы макÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð²Ñ‹Ñота и ширина, большие Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ уменьшены.</td></tr> <tr><td>Результат:</td> <td><i>кон_файл</i> при уÑпешном выполнении, пуÑÑ‚Ð°Ñ Ñтрока - иначе.</td></tr> <tr><td>Код возврата:</td> <td>1 при уÑпешном выполнении, 0 - иначе.</td></tr> </table> <p><code><b>copy</b></code></p> <table> <tr><td>Ðргументы:</td><td><i>иÑÑ…_файл</i> <i>кон_файл</i></td></tr> <tr><td>ДейÑтвие:</td><td>Копирует файл <i>иÑÑ…_файл</i> в файл <i>кон_файл</i> (путь <i>иÑÑ…_файл</i> определÑетÑÑ Ð¾Ñ‚Ð½Ð¾Ñительно конфигурационного параметра "resource_base").</td></tr> <tr><td>Результат:</td><td><i>кон_файл</i> при уÑпешном выполнении, пуÑÑ‚Ð°Ñ Ñтрока - иначе.</td></tr> <tr><td>Код возврата:</td><td>1 при уÑпешном выполнении, 0 - иначе.</td></tr> </table> <p><code><b>write</b></code></p> <table> <tr><td>Ðргументы:</td><td><i>имÑ_файла</i></td></tr> <tr><td>ТекÑÑ‚:</td><td><i>данные</i></td></tr> <tr><td>ДейÑтвие:</td><td>ЗапиÑывает <i>данные</i> в файл <i>иÑÑ…_файл</i>.</td></tr> <tr><td>Результат:</td><td><i>кон_файл</i> при уÑпешном выполнении, пуÑÑ‚Ð°Ñ Ñтрока - иначе.</td></tr> <tr><td>Код возврата:</td><td>1 при уÑпешном выполнении, 0 - иначе.</td></tr> </table> <p><code><b>read</b></code></p> <table> <tr><td>ТекÑÑ‚:</td><td><i>имÑ_файла</i></td></tr> <tr><td>ДейÑтвие:</td><td>Читает файл <i>имÑ_файла</i>.</td></tr> <tr><td>Результат:</td><td>прочитанные данные при уÑпешном выполнении, пуÑÑ‚Ð°Ñ Ñтрока - иначе.</td></tr> <tr><td>Код возврата:</td><td>1 при уÑпешном выполнении, 0 - иначе.</td></tr> </table> <p><code><b>include</b></code></p> <table> <tr><td>ТекÑÑ‚:</td><td><i>имÑ_файла</i></td></tr> <tr><td>ДейÑтвие:</td><td>включает шаблон из файла <i>имÑ_файла</i>.</td></tr> <tr><td>Результат:</td><td>результат обработки шаблона.</td></tr> <tr><td>Код возврата:</td><td>код возврата, полученный при обработке шаблона.</td></tr> </table> <p><code><b>!</b></code></p> <table> <tr><td>ТекÑÑ‚:</td><td><i>данные</i></td></tr> <tr><td>ДейÑтвие:</td><td>нет.</td></tr> <tr><td>Результат:</td><td>нет.</td></tr> <tr><td>Код возврата:</td><td>код возврата, полученный при обработке текÑта данных.</td></tr> </table> <p><code><b>replace</b></code></p> <table> <tr><td>Ðргументы:</td><td><i>Ñтр1</i> <i>Ñтр2</i></td></tr> <tr><td>ТекÑÑ‚:</td><td><i>данные</i></td></tr> <tr><td>Результат:</td><td>данные, Ñ Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ð½Ñ‹Ð¼Ð¸ вхождениÑми подÑтроки <i>Ñтр1</i> на <i>Ñтр2</i>.</td></tr> <tr><td>Код возврата:</td><td> код возврата, полученный при обработке текÑта данных.</td></tr> </table> <p><code><b>xml_escape</b></code></p> <table> <tr><td>ТекÑÑ‚:</td><td><i>данные</i></td></tr> <tr><td>Результат:</td><td>текÑÑ‚ <i>данные</i>, в котором Ñимволы '&', '<', '>', '`', '\' заменены на ÑоответÑтвующие ÑущноÑти XML.</td></tr> <tr><td>Код возврата:</td><td> код возврата, полученный при обработке текÑта данных.</td></tr> </table> <p><code><b>xml_cdata</b></code></p> <table> <tr><td>ТекÑÑ‚:</td><td><i>данные</i></td></tr> <tr><td>Результат:</td><td>данные в виде блока XML CDATA.</td></tr> <tr><td>Код возврата:</td><td> код возврата, полученный при обработке текÑта данных. </td></tr> </table> <p> МакропроцеÑÑор TEMA раÑширÑем: возможно добавление в ÑиÑтему новых функций, реализованных в виде клаÑÑов на Ñзыке Java. </p> <h2>ЗапуÑк</h2> <p>java -jar tema.jar [<i>опции</i>] </p><p> Опции: </p> <table> <tr><td>-d[emo]</td><td>ДемонÑтрационный режим</td></tr> <tr><td>-v[ersion]</td><td>Вывод верÑии</td></tr> <tr><td>-h[help] -u[sage]</td><td>Вывод Ñправки</td></tr> </table> <p> При запуÑке читаетÑÑ Ñ„Ð°Ð¹Ð» "tema.properties" из текущего каталога.<br /> Пример файла "tema.properties": </p> <pre> # ÐаÑтройка иÑточника данных # resource : jdbc:odbc:database # driver : sun.jdbc.odbc.JdbcOdbcDriver # Базовый каталог реÑурÑов # resource_base : . # Шаблон, Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ начинаетÑÑ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ° main_template : main.template # Кодировки файлов # input_encoding : UTF-8 # output_encoding : UTF-8 # КÑширование шаблонов # cache_read : true # Вывод результата разбора шаблона main.template в stderr # output : stderr # Вывод Ñообщений об ошибках в файл # log : dbreader.log </pre> </body> </html>