view misc/manual-ru-old/index.html @ 2:6c41a0b43e58

Tema 0.3 (imported from CVS).
author Mikhail Kryshen <mikhail@kryshen.net>
date Tue, 19 Feb 2008 20:32:17 +0300
parents
children
line source
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "DTD/xhtml1-transitional.dtd">
4 <html>
6 <head>
7 <title>Макропроцессор TEMA</title>
8 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9 </head>
11 <body>
12 <h1>Макропроцессор TEMA</h1>
14 <p>Макропроцессор TEMA обрабатывает заданные шаблоны текстовых файлов и
15 заменяет найденные в них инструкции на результаты их выполнения.
16 </p><p>
17 Особенности:
18 </p>
19 <ul>
20 <li>Расширяемость: возможно динамически подключать новые функии,
21 реализованные в виде классов на Java.</li>
22 <li>Работа с базами данных: использование SQL-запросов для получения
23 данных.</li>
24 <li>Поточная обработка данных: инструкции обрабатываются по мере
25 чтения текста без необходимости загрузки файла в оперативную память
26 и выполнения полного синтаксического разбора.</li>
27 </ul>
29 <p><b>Формат инструкций</b></p>
31 <blockquote>
32 <code>&lt;%<i>список_функций</i>{:|\|`}<i>данные</i>%&gt;</code>
33 </blockquote>
34 <p>
35 где<br />
37 <code><i>список_функций</i></code> - список имен функций, разделенных
38 пробелами. Может быть пустым.<br />
39 <code><i>данные</i></code> - данные, передаваемые функции.
40 </p>
42 <p><b>Формат данных</b></p>
44 <blockquote>
45 <code>
46 [<i>список_аргументов</i>][<i>текст</i>]
47 </code>
48 </blockquote>
49 <p>
50 где<br />
52 <code><i>список_аргументов</i></code> - список аргументов функции, разделенных пробелами.
53 Может быть пустым.<br />
54 <code><i>текст</i></code> - текст, передаваемый функции без разбиения на аргументы.
55 Может быть пустым. Количество аргументов, после которого следует
56 текст, зависит от функции.
57 </p><p>
58 Разделитель между списком функций и данными определяет, как должны
59 обрабатываться данные функции:
60 </p><p>
61 <code>:</code> - рекурсивная обработка,<br />
62 <code>\</code> или <code>`</code> - передать без обработки.
63 </p><p>
64 Если в списке функций задано две и более функции, они выполняются,
65 начиная с последней, так что каждая функция получает в качестве данных
66 результат выполнения следующей функции.
67 </p><p>
68 Каждая функция имеет код возврата - целое число. Код возврата
69 инструкции - код возврата первой в списке функции. Код возврата,
70 получаемый при обработке текста - сумма кодов возврата обработанных
71 инструкций (как правило, смысл этого значения - количество инструкций,
72 замененных на непустой текст).
73 </p><p>
74 Кроме скобок '&lt;', '&gt;', можно использовать скобки '[', ']'.
75 </p>
78 <h2>Функции</h2>
80 <p><code><b>set</b></code></p>
82 <table>
83 <tr><td>Аргументы:</td>
84 <td><i>имя</i></td></tr>
86 <tr><td>Текст:</td>
87 <td><i>значение</i></td></tr>
89 <tr><td>Действие:</td>
90 <td>Устанавливает значение переменной <i>имя</i>.</td></tr>
92 <tr><td>Результат:</td>
93 <td><i>имя</i></td></tr>
95 <tr><td>Код возврата:</td>
96 <td>1</td></tr>
97 </table>
99 <p><code><b>define</b></code></p>
101 <table>
102 <tr><td>Аргументы:</td>
103 <td><i>имя</i></td></tr>
105 <tr><td>Текст:</td>
106 <td><i>шаблон</i></td></tr>
108 <tr><td>Действие:</td><td>Определяет новую функцию <i>имя</i>, при
109 вызове которой обрабатывается <i>шаблон</i>. При обработке доступны
110 функции <code>nextarg</code> для получения очередного аргумента
111 вызываемой функции и <code>data</code> для получения текста.</td></tr>
113 <tr><td>Результат:</td>
114 <td><i>имя</i></td></tr>
116 <tr><td>Код возврата:</td>
117 <td>1</td></tr>
118 </table>
120 <p><code><b>load</b></code></p>
122 <table>
123 <tr><td>Аргументы:</td>
124 <td><i>имя</i> <i>имя_класса</i></td></tr>
126 <tr><td>Действие:</td>
128 <td>Определяет новую функцию <i>имя</i>. Реализация функции определена
129 Java-классом <i>имя_класса</i>, наследующим класс
130 <code>kryshen.tema.Function</code>.</td></tr>
132 <tr><td>Результат:</td>
133 <td><i>имя</i></td></tr>
135 <tr><td>Код возврата:</td>
136 <td>1</td></tr>
137 </table>
139 <p><code><b>prepare</b></code></p>
141 <table>
142 <tr><td>Аргументы:</td>
143 <td><i>имя</i></td></tr>
145 <tr><td>Текст:</td>
146 <td><i>запрос</i></td></tr>
148 <tr><td>Действие:</td>
149 <td>Подготавливает SQL-запрос <i>запрос</i> для выполнения, записывает
150 подготовленный запрос в переменную <i>имя</i>.</td></tr>
152 <tr><td>Результат:</td>
153 <td><i>имя</i></td></tr>
155 <tr><td>Код возврата:</td>
156 <td>1</td></tr>
157 </table>
159 <p><code><b>query</b></code></p>
161 <table>
162 <tr><td>Аргументы:</td>
163 <td><i>имя_запроса</i> <i>шаблон</i> <i>парам1</i> ... <i>парамN</i></td></tr>
165 <tr><td>Действие:</td>
166 <td>Выполняет запрос с параметрами, подготовленный с помощью функции
167 prepare. Значения параметров подставляются в запрос вместо символа
168 '?'. Значения полей ответа доступны с помощью функции <code>db</code>,
169 как переменные шаблона <i>шаблон</i>. При обработки шаблона также
170 определяется переменная <code>number</code>, содержащая номер текущей
171 строки ответа.</td></tr>
173 <tr><td>Результат:</td>
174 <td>результат обработки шаблона <i>шаблон</i> для каждой строки
175 ответа.</td></tr>
177 <tr><td>Код возврата:</td>
178 <td>Количество полученных строк ответа.</td></tr>
179 </table>
181 <p><code><b>optional</b></code></p>
183 <table>
184 <tr><td>Текст:</td>
185 <td><i>данные</i></td></tr>
187 <tr><td>Результат:</td><td><i>данные</i>, если при обработке данных
188 был получен код возврата отличный от 0, иначе - пустая
189 строка.</td></tr>
191 <tr><td>Код возврата:</td>
192 <td>1, если результат - пустая строка, 0 - иначе.</td></tr>
193 </table>
195 <p><code><b>image</b></code></p>
197 <table>
198 <tr><td>Аргументы:</td>
199 <td><i>исх_файл</i> <i>кон_файл</i> <i>формат</i> [<i>макс_ширина</i>
200 [<i>макс_высота</i>]]</td></tr>
202 <tr><td>Действие:</td>
203 <td>Загружает изображение из файла <i>исх_файл</i> (путь определяется
204 относительно конфигурационного параметра "resource_base") и
205 преобразует его в указанный формат, сохраняя результат в
206 <i>кон_файл</i>. Если заданы максимальная высота и ширина, большие
207 изображения будут уменьшены.</td></tr>
209 <tr><td>Результат:</td>
210 <td><i>кон_файл</i> при успешном выполнении, пустая строка - иначе.</td></tr>
212 <tr><td>Код возврата:</td>
213 <td>1 при успешном выполнении, 0 - иначе.</td></tr>
214 </table>
217 <p><code><b>copy</b></code></p>
219 <table>
220 <tr><td>Аргументы:</td><td><i>исх_файл</i> <i>кон_файл</i></td></tr>
222 <tr><td>Действие:</td><td>Копирует файл <i>исх_файл</i> в файл
223 <i>кон_файл</i> (путь <i>исх_файл</i> определяется относительно
224 конфигурационного параметра "resource_base").</td></tr>
226 <tr><td>Результат:</td><td><i>кон_файл</i> при успешном выполнении,
227 пустая строка - иначе.</td></tr>
229 <tr><td>Код возврата:</td><td>1 при успешном выполнении, 0 -
230 иначе.</td></tr>
231 </table>
233 <p><code><b>write</b></code></p>
235 <table>
236 <tr><td>Аргументы:</td><td><i>имя_файла</i></td></tr>
238 <tr><td>Текст:</td><td><i>данные</i></td></tr>
240 <tr><td>Действие:</td><td>Записывает <i>данные</i> в файл
241 <i>исх_файл</i>.</td></tr>
243 <tr><td>Результат:</td><td><i>кон_файл</i> при успешном выполнении,
244 пустая строка - иначе.</td></tr>
246 <tr><td>Код возврата:</td><td>1 при успешном выполнении, 0 -
247 иначе.</td></tr>
248 </table>
250 <p><code><b>read</b></code></p>
252 <table>
253 <tr><td>Текст:</td><td><i>имя_файла</i></td></tr>
254 <tr><td>Действие:</td><td>Читает файл <i>имя_файла</i>.</td></tr>
255 <tr><td>Результат:</td><td>прочитанные данные при успешном выполнении,
256 пустая строка - иначе.</td></tr>
257 <tr><td>Код возврата:</td><td>1 при успешном выполнении, 0 -
258 иначе.</td></tr>
259 </table>
261 <p><code><b>include</b></code></p>
263 <table>
264 <tr><td>Текст:</td><td><i>имя_файла</i></td></tr>
265 <tr><td>Действие:</td><td>включает шаблон из файла
266 <i>имя_файла</i>.</td></tr>
267 <tr><td>Результат:</td><td>результат обработки шаблона.</td></tr>
268 <tr><td>Код возврата:</td><td>код возврата, полученный при обработке
269 шаблона.</td></tr>
270 </table>
272 <p><code><b>!</b></code></p>
274 <table>
275 <tr><td>Текст:</td><td><i>данные</i></td></tr>
277 <tr><td>Действие:</td><td>нет.</td></tr>
279 <tr><td>Результат:</td><td>нет.</td></tr>
281 <tr><td>Код возврата:</td><td>код возврата, полученный при обработке
282 текста данных.</td></tr>
283 </table>
285 <p><code><b>replace</b></code></p>
287 <table>
288 <tr><td>Аргументы:</td><td><i>стр1</i> <i>стр2</i></td></tr>
290 <tr><td>Текст:</td><td><i>данные</i></td></tr>
292 <tr><td>Результат:</td><td>данные, с замененными вхождениями подстроки
293 <i>стр1</i> на <i>стр2</i>.</td></tr>
295 <tr><td>Код возврата:</td><td> код возврата, полученный при обработке
296 текста данных.</td></tr>
297 </table>
299 <p><code><b>xml_escape</b></code></p>
301 <table>
302 <tr><td>Текст:</td><td><i>данные</i></td></tr>
303 <tr><td>Результат:</td><td>текст <i>данные</i>, в котором символы
304 '&amp;', '&lt;', '&gt;', '`', '\' заменены на соответствующие сущности
305 XML.</td></tr>
307 <tr><td>Код возврата:</td><td> код возврата, полученный при обработке
308 текста данных.</td></tr>
309 </table>
311 <p><code><b>xml_cdata</b></code></p>
313 <table>
314 <tr><td>Текст:</td><td><i>данные</i></td></tr>
316 <tr><td>Результат:</td><td>данные в виде блока XML CDATA.</td></tr>
318 <tr><td>Код возврата:</td><td> код возврата, полученный при обработке
319 текста данных. </td></tr>
320 </table>
322 <p>
323 Макропроцессор TEMA расширяем: возможно добавление в систему новых
324 функций, реализованных в виде классов на языке Java.
325 </p>
327 <h2>Запуск</h2>
329 <p>java -jar tema.jar [<i>опции</i>]
330 </p><p>
331 Опции:
332 </p>
333 <table>
334 <tr><td>-d[emo]</td><td>Демонстрационный режим</td></tr>
335 <tr><td>-v[ersion]</td><td>Вывод версии</td></tr>
336 <tr><td>-h[help] -u[sage]</td><td>Вывод справки</td></tr>
337 </table>
339 <p>
340 При запуске читается файл "tema.properties" из текущего каталога.<br />
341 Пример файла "tema.properties":
342 </p>
344 <pre>
345 # Настройка источника данных
346 # resource : jdbc:odbc:database
347 # driver : sun.jdbc.odbc.JdbcOdbcDriver
349 # Базовый каталог ресурсов
350 # resource_base : .
352 # Шаблон, с которого начинается обработка
353 main_template : main.template
355 # Кодировки файлов
356 # input_encoding : UTF-8
357 # output_encoding : UTF-8
359 # Кэширование шаблонов
360 # cache_read : true
362 # Вывод результата разбора шаблона main.template в stderr
363 # output : stderr
365 # Вывод сообщений об ошибках в файл
366 # log : dbreader.log
367 </pre>
369 </body>
370 </html>