InfoCity
InfoCity - виртуальный город компьютерной документации
Реклама на сайте







Размещение сквозной ссылки

 

Parser 1.0


Программировать сайты без Parser’а долго и скучно. Нам надоело этим заниматься в 95 году. Parser оптимизирует процесс создания любого сайта.

Операторы Parser’а используются для написания шаблонов страниц. Когда пользователь обращается к файлу, содержащему такой шаблон, макропроцессор автоматически создает нужную страницу, подставляя конкретные данные в качестве аргументов. Таким образом, три оператора, написанных программистом, могут стать основой для страницы из тридцати килобайт.

 

Parser ориентирован на выполнение узкого круга задач, поэтому с его помощью они решаются максимально быстро и эффективно. Со времени своего создания Parser был значительно модифицирован, что расширило его функциональность и позволило развивать новые направления его применения.

 

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

 

Аргументы операторов разделяются символом ‘;’.

 

Формат вызова оператора:

 

^имя[аргумент 1;аргумент 2;...;аргумент N]

 

Аргументами могут быть и выражения с использованием операторов.

 

В Parser’е также предусмотрена возможность использования собственных макросов.

 

Синтаксис определения макросов:

 

@имя

шаблон

 

или

 

@имя[аргумент 1;аргумент 2;...;аргумент N] комментарий

шаблон

 

Например:

 

@href[link;title] Cсылка

<a href=$link>$title</a>

 

Таким образом определяется макрос href с аргументами link и title.

 

Для вызова макроса используется оператор macro.

 

При обработке шаблона оператор интерпретируется как инструкция – «найти шаблон данного макроса и подставить в него переданные значения. После этого обрабатываются операторы шаблона и результат включается в код страницы».

 

Например,

 

^macro[href;http://www.artlebedev.ru;Группа компаний Артемия Лебедева]

 

вернет строку

 

<a href=http://www.artlebedev.ru>Группа компаний Артемия Лебедева</a>

 

и включит ее в код страницы.

 

В шаблонах макросов могут также использоваться операторы.

 

Как правило, вызов оператора с неправильным числом аргументов приводит к ошибке. Но есть и исключение: вызов оператора config подразумевает наличие одного аргумента, однако его вызов без параметров не будет считаться ошибкой. В этом случае единственный аргумент оператора будет считаться равным пустой строке.

 

Обычно обработке подвергаются все аргументы оператора, однако существует ряд операторов, аргументы которых обрабатываются частично. Ситуации, результатом которых становится частичная обработка аргументов некоторых операторов, рассматриваются в «Описании операторов».

 

В тех случаях, когда аргумент оператора содержит ‘;’ (разделительный символ), такой аргумент следует выделять символами ‘`’ (back stick). Например:

 

^macro[parameter 1;`paramet;er 2`;parameter 3]

 

или использовать конструкцию ^;. Например:

 

^macro[parameter 1;paramet^;er 2;parameter 3]

 

Если в тексте шаблона необходим символ ‘$’, то его следует заменять на двойной – ‘$$’.

Для указания в тексте символа ^, нужно использовать комбинацию ^^.

Все имена в Parser’е назначаются с учетом регистра. Допустимо, но не рекомендуется использование русских букв и пробелов.

 

Контексты


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

 

Контекст – это двухмерная таблица, имеющая имя. Каждый столбец этой таблицы также может иметь имя, а может и не иметь – тогда обращение к нему будет производиться по номеру.

 

Существует понятие «текущего контекста». Работа ряда операторов связана с текущим контекстом.

 

Операторы, создающие контексты, всегда записывают данные в текущий контекст. Источниками данных становится результат выполнения операторов config, load, sql, lsplit, rsplit и match.

 

Способов переключения текущего контекста два:

 

1. Временное переключение контекста:

# текущий контекст - teacher

^context[pupil;

# текущий контекст - pupil

^load[named;people.cfg]

^menu[^item[family_name];,]

]

# текущий контекст - teacher

 

2. Постоянная смена текущего контекста

^context[контекст 1]

контекст 1

^context[контекст 2]

контекст 2

 

Уровень обработки


Специфика обработки языка HTML привела к необходимости дополнительной обработки данных, предшествующей их выдаче пользователю. Например, если пользователь ввел данные, содержащие знак ‘<’, то при подстановке результата в шаблон HTML-код, вероятно, разрушится.

 

LEVEL-обработке подвергаются результаты следующих операторов:

item

form

cookie

var

 

Уровень

Описание работы

html (по умолчанию)

Символы “ < и > заменяются на &quot; &lt; &gt; соответственно. Tab – на пробел.

config

Символы Tab и Enter заменяются на пробел.

javascript

Символы с кодами 255d, 209d («я» в win и koi кодировке) заменяются на \я (для обеспечения совместимости с Netscape 3). Символы ’ и \ предваряются \. Символы с кодами 10d и 13d преобразуются в \n и \r соответственно.

sql

Символы ’ и \ предваряются \. Символы с кодами 10d и 13d преобразуются в \n и \r соответственно. Tab в пробел.

none

Ничего не заменяется («as is»).

 

По умолчанию level = html. Для смены уровня следует использовать оператор level.

Автоматическое изменение уровней производится на время обработки операторов config (level=config) и sql (level=sql).

 

Описание операторов

 

Условное обозначение: | = или.

 

parser.cgi


 

^optimize[yes|no]

Если ‘yes’, происходит оптимизация всего кода перед выдачей пользователю. Из нескольких символов white space (пробел, tab, \n, \r) подряд остается только первый. По умолчанию ^optimize[yes].

modules\mod_cgi.c


^form[имя поля формы]

Возвращает значение поля формы. Не делает разницы между различными методами передачи данных сервером (GET/POST) и корректно работает с русским Apache при <form enctype=multipart/form-data…>.

Пример:

<form method=post>

    <input type=hidden name=test value="this is a space">

<input type=submit>

</form>

the value is: ^form[test]

 

После нажатия на кнопку 'Submit Query' вернет 'the value is: this is a space'

 

^number[имя поля формы]

То же, что и ^form[], но для числовых значений. Десятичный разделитель - '.'. Если значение аргумента не является числовым, возвращается 0.

 

^query[]

Без параметров. Возвращает строку запроса (QUERY_STRING).

Пример:

При обращении к адресу test.html?abc

оператор ^query[] внутри test.html

 

вернет abc

 

^env[имя переменной окружения]

Возвращает значение указанной переменной окружения сервера.

Пример:

^env[SERVER_NAME] вернет www.server-name.ru

 

Список переменных доступен на http://www.w3c.org/cgi

 

^uri[]

Без параметров. Возвращает URI текущего html-документа.

Пример:

При обращении к адресу http://www.server.ru/abc/def.html?ghi

uri[]

 

вернет /abc/def.html?ghi

 

^combine[имя поля формы;символ-разделитель]

Возвращает значения имени поля формы, разделенные указанным символом. Разделитель по умолчанию равен '|'.

Пример:

<form method=post>

<input type=checkbox name=exp value=1> HTML

<input type=checkbox name=exp value=2> HTML

<input type=submit>

</form>

^combine[exp]

 

после нажатия на кнопку 'Submit Query' вернет '1|2'

 

^browser[ie|nn;версия]

Определение браузера и его версии. Значения первого аргумента: ie (для Internet Explorer) и nn (для Netscape Navigator). Возвращает версию браузера, но только в случае, если его идентификатор (ie или nn) совпадает с типом браузера, а версия меньше или равна указанной в качестве второго аргумента.

Например, ^browser[ie;5] вернет 5 для Internet Explorer 5.0, а для Internet Explorer 4.0 и Netscape Navigator любой версии вернет пустую строку.

Пример:

^ifdef[^browser[nn;99];

    Это NN

;

    Это IE

]

 

^header[имя заголовка;значение]

Передает браузеру HTTP заголовок с указанным значением.

Пример:

^header[refresh;5^;url=/]

 

вызовет через пять секунд перенаправление на страницу /.

 

modules\mod_common.c


 

^rem[комментарий]

Комментарии не попадают в конечный код.

Пример:

^rem[текст статьи]

 

^color[hex-код первого цвета;hex-код второго цвета]

Если номер вызова оператора в конкретном контексте нечетный, возвращает hex-код первого цвета, если четный - hex-код второго цвета.

Пример:

^menu[

<li><font color=^color[ffcc00;ff00cc]> Строка цвета ^color[ffcc00;ff00cc]

]

 

^mangle[строка]

Кодирует строку для ее использования в качестве части URL. Корректно работает с русским Apache.

Пример:

^mangle[Москва]

 

в случае, если посетитель заходит на сайт с Macintosh,

 

вернет %8C%EE%F1%EA%E2%E0

 

если PC,

 

вернет %CC%EE%F1%EA%E2%E0

 

^date[строка в стандарте POSIX]

Возвращает текущие дату и время.

 

%%     то же самое, что и %

 

%a

%A     название дня недели.

 

%b

%B

%h     название месяца.

 

%c     дата и время;  аналогично %x %X.

 

%C     дата и время в длинном формате представления времени и даты.

 

%d

%e     день месяца (1-31).

 

%D     дата; аналогично %m/%d/%y

 

%H

%k     час (0-23).

 

%I

%l     час (0-12).

 

%j     номер текущего дня года (001-366).

 

%m     номер месяца (1-12).

 

%M     минута (0-59).

 

%p     указатель AM или PM

 

%r     время в формате %I:%M:%S %p

 

%R     время в формате %H:%M

 

%S     секунда. Дополнительная секунда в високосный год (0-61).

 

%T     время в формате %H:%M:%S

 

%w     номер дня недели (0-6); первый - воскресенье.

 

%x     дата в формате по умолчанию.

 

%X     время в формате по умолчанию.

 

%y     номер года века (0-99).

 

%Y     год (например, 1998).

 

Пример:

^date[Текущая дата: %d.%m.%y%nВремя: %H:%M:%S]

 

^sum[число 1;число 2]

Возвращает число 1 + число 2.

Пример:

^sum[12;22]

вернет 34

 

^process[данные]

Загружает данные, обрабатывая макросы в них.

Пример:

^process[^^date[%Y]]

 

вернет 2000

 

^level[уровень;данные]

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

 

Уровень

Описание работы

html (по умолчанию)

Символы “ < и > заменяются на &quot; &lt; &gt; соответственно. Tab – на пробел.

сonfig

Символы Tab и Enter заменяются на пробел.

javascript

Символы с кодами 255, 209 («я» в win и koi кодировке) заменяются на \я (для обеспечения совместимости с Netscape 3). Символы « ’ и \ тоже предваряются \. Символы с кодом 10 и 13 преобразуются в \n и \r соответственно.

sql

Преобразование всех символов level’а javascript, кроме «я». Преобразование Tab - пробел.

none

Ничего не заменяется («as is»).

 

Пример:

^config[<b>]

^level[none;^item[0]]<br>

^item[0]

 

вернет:

<b><br>

&lt;b&gt;

 

^random[]

^random[число]

Возвращает случайное целочисленное значение, большее или равное нулю, но меньшее и не равное числу. По умолчанию число - 1000000.

Пример:

^random[200]

 

modules\mod_cookie.c


 

^cookie[имя cookie]

^cookie[имя cookie;значение]

^cookie[имя cookie;значение;session|количество дней]

Работа с cookie. Если параметр всего один – имя cookie, то возвращается значение cookie c этим именем. Если параметров больше одного, то в указанное cookie записывается значение. Если третий аргумент не определен, то cookie по умолчанию хранится 90 дней. Если он равен session, то cookie хранится в течение одной сессии. Если задано целочисленное значение, то cookie хранится указанное количество дней.

Пример:

^cookie[test;5] ^rem[записать в cookie test значение '5' на 90 дней]

^cookie[test;5;7] ^rem[записать в cookie test значение '5' на 7 дней]

^cookie[test;5;session] ^rem[записать в cookie test значение '5' на время сессии]

^cookie[test] ^rem[считать значение cookie test]

 

modules\mod_exec.c


 

^exec[URI]

^exec[URI;QUERY_STRING]

^exec[URI;QUERY_STRING;PATH_INFO]

Вызывает внешний CGI-скрипт с указанными QUERY_STRING и PATH_INFO. Последние два аргумента – необязательные.

Пример:

^exec[/cgi-bin/test.pl;var1=1&var2=2]

 

lsplit[строка;символ]

Разделяет строку на части, разделенные символом, и замещает данные в текущем контексте.

Пример:

^context[man;

 ^lsplit[Вася Пупкин; ]

 имя: ^item[0]

 фамилия: ^item[1]

]

 

rsplit[строка;символ]

Разделяет строку на части, разделенные символом, и замещает данные в текущем контексте. Части строки располагаются справа налево.

Пример:

^context[abc;

 ^rsplit[a|b|c;|]

 последний элемент: ^item[0]

]

 

modules\mod_file.c


 

^name[путь]

Возвращает имя файла, содержащееся в пути.

Пример:

^name[http://www.design.ru/index.html]

 

вернет index.html

 

^-f[имя файла]

Возвращает путь, если файл с таким именем существует. Если не существует, то возвращает пустую строку.

Пример:

^ifdef[^-f[image.gif];

<img src=image.gif>

;]

 

^stat[size|fsize|atime|mtime|ctime;путь]

Возвращает информацию о файле из указанного пути, определяемую первым аргументом. Его возможные значения:

  •  size - размер файла в байтах
  • fsize - форматированный размер файла: ^stat[fsize;index.pdf;bytes;Kb;Mb]
  • atime - время последнего обращения.
  • mtime - время последнего изменения.
  • ctime - время создания.

Пример:

Поздравляю, вы только что загрузили как минимум ^stat[size;/index.html] байт (не считая изображений)!<br>

Размер документа: ^stat[fsize;/index.html;bytes;Kb;Mb]<br>

Последнее обновление документа: ^stat[mtime;/index.html]

 

^find[имя файла]

^find[имя файла;строка]

Возвращает относительный путь к файлу при условии, что он существует и находится на текущем или более высоком уровне. Иначе возвращает строку.

Пример:

^find[picture.gif;Изображение не найдено]

 

^include[путь]

Вставляет содержимое файла из пути, не обрабатывая макросы внутри него.

^include[/inc/macros.inc]

 

^index[путь|путь/*.расширение]

Загружает в текущий контекст список файлов из пути.

Пример:

^context[dir;

    ^index[*.txt]

    Файлы с расширением *.txt в текущей директории:

    ^menu[

        ^item[0]<br>

]

]

 

modules\mod_image.c


 

^imagesize[путь]

Загружает в текущий контекст размеры указанного в пути изображения в формате GIF или JPEG.

^item[0] - ширина, а ^item[1] - высота изображения.

Пример:

^context[image_size;

    ^imagesize[image.gif]

    <img src=image.gif width=^item[0] height=^item[1]>

]

modules\mod_logic.c


 

^eq[A;B;совпадают;различны]

Если строка A равна строке B, возвращается третий аргумент, иначе возвращается четвертый.

Пример:

^eq[1;2;

    никогда не будет возращаться

;

    всегда будет возвращаться

]

 

^ifdef[строка;не пуста;пуста]

Если строка не пуста, возвращается второй аргумент, иначе возвращается третий.

Пример:

^ifdef[!;

    всегда будет возвращаться

;]

^ifdef[^eq[1;1;!;];

    О да! 1 == 1

;

    1 != 1 - false, поэтому мы никогда не увидим эту строку в браузере

]

 

^start[URI;совпадает;не совпадает]

Если URI HTML-страницы начинается с указанного, возвращает второй аргумент, иначе возвращает третий.

Пример:

в документе с URI /pr/photos/index.html

^start[/pr/photos/;

    А это наши фотографии!

;

    Просмотр фотографий: <a href=/pr/photos/>/pr/photos/</a>

]

 

^default[строка;значение]

Если строка не пуста, то возвращает ее, если пуста - возвращает значение.

Пример:

^default[^form[name];Аноним]

 

^optionset[набор элементов;данные]

Возвращает 'yes', если данные содержатся в наборе элементов. (Набор элементов - список, разделенный символом '|').

Пример:

^ifdef[^optionset[1|2|3;3];

    Найдено

;

    Не найдено

]

 

вернет 'Найдено'.

 

^optionclear[набор элементов;данные]

Удаляет данные из набора элементов и возвращает результат. Если набор не содержал данные, то результат равен исходному набору элементов.

Пример:

^eq[^optionclear[1|2|3;4];1|2|3;

    Не найдено

;

    Успешно удалено

]

 

вернет 'Не найдено'.

 

modules\mod_macro.c


 

^macro[макрос;аргумент 1;аргумент 2;....;аргумент N]

Вызывает макрос c указанными аргументами. Формат подстановки значений аргументов в шаблон: $имя или $1..$N.

Пример:

^macro_new[hint;<font size=-2>$1</font>]

^macro[hint;Эта страница содержит дополнительную информацию]

 

^macro_new[макрос;шаблон]

^macro_new[макрос;аргумент 1;...;шаблон]

Определяет новый макрос с указанными аргументами, шаблоном. Не используется в файле _macro.cfg и подобных ему.

Пример:

^macro_new[NameFormat;

    <b>$1</b>

]

 

^macro_use[путь]

Загружает внешний файл с макросами. Если в путь равен parser.cfg, загружаются все файлы с таким именем, начиная с корня сервера. Если в качестве аргумента передан путь к папке, загружаются все файлы этой папки. Если в качестве аргумента передан путь к файлу, загружается этот файл. При этом имена файлов должны начинаться с ‘_’, не указываемого в аргументе оператора.

Пример:

^macro_use[/conf/issues.cfg]

в каталоге /conf должен находиться файл с таким именем.

modules\mod_regex.c


 

^match[шаблон;опции поиска;строка]

Найти искомую подстроку в указанной строке с использованием шаблона (регулярное выражение). Опции поиска: g - глобальный поиск, i - не учитывать регистр и др. В регулярных выражениях шаблона вместо символа '^' используется '^^', а вместо '$' - '$$'. Если в шаблоне используются '()', то перезаписывается текущий контекст.

Пример:

^match[^^apple.*;;apple169]

 

вернет 'yes', а

 

^context[temp;

    ^match[([a-z]+)([^^a-z]+)$$;;apple169]

    ^item[\2]

]

 

вернет '169'.

 

http:///

 

^match[шаблон;опции поиска;строка 2;строка 1]

Найти искомую подстроку в строке 1 используя шаблон и заменить ее на строку 2. Опции поиска: см. match.

Пример:

^match[apple;g;orange;i like apple]

 

 вернет 'i like orange'

 

modules\mod_sendmail.c


 

^sendmail[параметры]

Отправляет email, вызывая под UNIX “/usr/sbin/sendmail -t” с указанными параметрами на stdin.

Под Win32 должен быть предварительно определен макрос SMTP_SERVER, содержащий адрес SMTP-сервера.

Пример:

^sendmail[To: all@world.wide

From: me@own.thin

Subject: Я сделал это!

 

Теперь я могу отправлять почту!]

 

modules\mod_sort.c


 

^sort[ключ сортировки;опции сортировки]

Сортировка текущего контекста с указанными ключом и опциями сортировки. Возможные значения опций:

Первый параметр:

+ - по возрастанию.

- - по убыванию.

 

Второй параметр:

A - по алфавиту.

N - по по дробным числам.

D - по по целому числу.

Пример:

^sort[^item[0];+A]

modules\mod_str.c


 

^toupper[строка]

Преобразует все буквы строки в прописные.

Пример:

^toupper[Всем привет!]

 

вернет 'ВСЕМ ПРИВЕТ!'

 

^tolower[строка]

Преобразует все буквы строки в строчные.

Пример:

^tolower[Всем привет!]

 

вернет 'всем привет!'

 

modules\mod_table.c


 

^config[данные]

^config[команда;данные]

Замещает данные текущего контекста, загружая в него данные в формате text/tab-delimited.

Если используется только один параметр, то этот параметр должен содержать данные, например:

^context[names;

    ^config[Сергей    Иванович

Алексей Петрович]

^menu[

    ^item[0] ^item[1]<br>

]

]

 

вернет

Сергей Иванович

Алексей Петрович

 

Если используется два параметра, то в роли контейнера с данными выступает второй параметр, а в качестве первого могут передаваться следующие команды:

  • named - создать контекст, каждый столбец которого имеет имя
  • append - добавить запись в текущий контекст
  • insert - добавить запись в текущий контекст на текущую позицию
  • insert;n - добавить запись в текущий контекст на позицию n
  • remove - стирает запись из текущей позиции текущего контекста
  • remove;position - стирает запись из конкретной позиции текущего контекста
  • remove;position;count - стирает count записей из конкретной позиции текущего контекста

 

^load[путь]

^load[named;путь]

Замещает данные текущего контекста, загружая в него данные из указанного файла. При этом имена файлов должны начинаться с символа ‘_’, не указываемого в аргументе оператора. Если указан первый аргумент - named, то создается контекст с именами столбцов, источником которых становится первая строка файла.

Пример:

^context[data;

    ^load[data.cfg]

]

 

^flip[имя контекста]

Преобразует (транспонирует) текущую строку контекста в столбец в контексте.

Пример:

^context[temp;

    ^config[1 2    3

4   5    6]

]

^flip[temp]

^menu[^item[0]-]

 

вернет 1-2-3-

 

^context[контекст;код]

Выполняет указанный код в указанном контексте.

 

^empty[нет данных;есть данные]

Если текущий контекст не содержит данных, возвращает значение первого аргумента, иначе – значение второго.

Пример:

^config[]

^empty[Контекст не содержит записей;Данные упешно загружены]

вернет «Контекст не содержит записей»

 

^locate[колонка 1;колонка 2]

Объявляет текущей позицией в контексте строку, колонка 1 которой равна колонке 2. Если эта строка не найдена, текущей объявляется первая строка.

Пример:

^context[temp;

    ^locate[0;Иванов]

    ^eq[^item[0];Иванов;

        Запись найдена

;

        Запись не найдена

]

]

 

^shift[количество строк]

Перемещает указатель текущей строки контекста на указанное количество строк вниз. Если arg имеет отрицательное значение, указатель перемещается вверх. Движение указателя по строкам контекста осуществляется циклически, то есть при достижении указателем последней строки, он автоматически перемещается на первую, и наоборот.

Пример:

^config[1

2

3

4

5]

^shift[+3]

^item[0]-

^shift[-4]

^item[0]

 

вернет 4-5

 

^item[колонка]

^item[имя контекста;колонка]

Возвращает элемент из столбца контекста. Если контекст не указан, то возвращаются данные из текущего контекста.

Существуют предопределенные значения для второго аргумента, а именно:

^item[count] – количество строк в контексте.

^item[current] – номер строки контекста, начиная с 0.

^item[number] – номер строки контекста, начиная с 1.

^item[next;номер столбца] - ^shift[+1]^item[номер столбца]^shift[-1]

^item[prev;номер столбца] – ^shift[-1]^item[номер столбца]^shift[+1]

Пример:

^context[temp;

    ^config[1 2]

]

^item[temp;1]

 

вернет 2

 

^table[количество столбцов;данные]

^table[количество столбцов;данные;заполнитель]

Перебирает все данные текущего контекста, представляя их в табличной форме.

Например, если входные данные были: 1 2 3 4 5 и количество столбцов = 2, получится:

1     4

2     5

3     &nbsp;

 

Заполнитель = содержимое пустой ячейки таблицы (&nbsp; по умолчанию).

Пример:

^context[temp;

    ^config[1

2

3

4

5]

<table><tr>

^table[2;<td>^item[0]</td>]

    </tr></table>

]

 

вернет:

<table><tr>

    <td>1</td>

    <td>4</td>

    </tr><tr>

    <td>2</td>

    <td>5</td>

</tr><tr>

    <td>3</td>

    <td>&nbsp;</td>

</tr></table>

 

^menu[код]

^menu[код;разделитель результатов]

Перебирает все строки текущего контекста и на каждой итерации выполняет код.

Если результат выполнения кода не пустая строка, то можно использовать разделитель, указываемый во втором аргументе.

Пример:

^context[temp;

    ^config[1

2

3

4

5]

    ^menu[

^item[0]<br>

]

 

вернет '1

2

3

4

5'

 

^for[имя контекста;начальное значение переменной цикла;конечное значение переменной цикла +1;тело цикла]

CLTKFNM GJVTYT

Цикл.

Имя контекста – контекст, в котором хранится переменная цикла

Тело цикла - item[0] - переменная цикла

Пример:

^for[i;0;10;^item[i;0]<br>]

modules\mod_upload.c


^upload[имя файла;name|size|value]

Если второй аргумент не совпадает ни с одним из нижеприведенных значений, записывает файл, переданный через <input type=file> на сервер c указанным именем файла, иначе возвращает характеристики записываемого файла. Возможные значения аргумента 2:

  • name - вернуть имя файла
  • size - вернуть размер файла
  • value - вернуть содержание файл

Пример:

<form method=post name=image enctype="multipart/form-data">

    <input type=file name=image enctype="multipart/form-data">

<input type=submit>

</form>

^ifdef[^form[image];

    ^upload[image;/upload/^upload[image;name]]

Записан файл ^upload[image;name] объемом ^upload[image;size].

;]

 

modules\mod_var.c


 

^var[имя переменной]

^var[имя переменной;значение]

Если не используется значение, возвращается значение переменной с указанным именем, иначе в переменную с указанным именем записывается значение.

Пример:

^var[test;123]

^var[test]

 

 вернет '123'

 

^var[имя переменной;арифметическое действие;число]

Совершает арифметическое действие с переменной на указанное число.

Пример:

^var[test;123]

^var[test;+;5]

 

вернет '128'

 

 

modules.sql\mod_mysql.c


 

^server[параметры подключения к серверу;действие]

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

Формат данных о сервере:

user:password@host[:port]/database

Пример:

^server[user:password@host/database;

    ^sql[show tables]

]

 

^sql[запрос]

Выполняет sql-запрос к mysql серверу и записывает результат в текущий контекст.

Пример:

^server[user:password@host/database:;

    ^sql[select * from test order by id desc]

    ^menu[

        ^item[id]<br>

]

]

 

 

Культура программирования


Даже если вы работаете над проектом в одиночестве, вероятность того, что впоследствии в нем не придется разбираться кому-то другому, чрезвычайно мала. Более того, через некоторое время даже вы не сможете вспомнить многое из того, что во время написания кода казалось очевидным.

1. Комментарии - золото.

2. Называйте свои контексты и макропараметры понятными именами. В процессе придумывания названий для макропараметров используйте следующий шаблон «субъект-что_с_ним_сделать». Забудьте об именах abc и tmp. Одно имя не должно начинаться с конструкции другого (X и X1).

3. Никогда не создавайте макропараметры, код которых не помещается на одном экране стандартного разрешения монитора. Старайтесь укладываться в 20 строк.

4. Не забывайте о том, какой из контекстов является текущим. Используйте только способ временного переключения. Блок контекста должен быть небольшим. Контекст в контексте – не рекомендуется.

5. Оформляйте логические блоки всех ваших страниц макропараметрами в macro.cfg. Логические блоки разделов – макропараметрами локальных macro.cfg. Для отдельных страниц используйте оператор ^macro_new.

6. Только в небольших тестовых страницах, работающих с одним набором данных, можно работать с контекстом без имени.

7. Не используйте ^form в в числовых полях оператора ^sql. Используйте ^number.

следует писать

parameter=^number[parameter]

вместо

parameter=^form[parameter]

8. Не используйте результаты работы оператора ^form в операторе ^load.

 

Установка

 

Часть:

Добавьте в .htaccess (или в httpd.conf в секцию <virtualhost>) блоки:

 

#назначение обработчиком .html страниц

AddType parsed-html .html

Action parsed-html /cgi-bin/parser

 

#запрет на доступ к .cfg файлам. основной: _macro.cfg

<Files ~ "\.cfg$">

    Order allow,deny

    Deny from all

</Files>


Реклама на InfoCity

Яндекс цитирования



Финансы: форекс для тебя








1999-2009 © InfoCity.kiev.ua