` | PARSER | документация |

parser

faqfaq
авторыавторы
документациядокументация

в действиив действии
куда говоритькуда говорить
жаргонжаргон

скачатьскачать

примерыпримеры
форумфорум

документация

3. Операторы Парсера

3.10. Файлы

3.10.1. Выделение имени файла из пути. Оператор name

Формат вызова

^name[полное_имя_файла]

Аргументы

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

Описание

Оператор возвращает имя файла без пути и расширения.

Примеры

Вызов ^name[/dir/subdir/index.html] вернет значение index.

3.10.2. Проверка существования файла на диске. Оператор -f

Формат вызова

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

Аргументы

имя_файла — имя файла, который нужно найти.

Описание

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

Примеры

^var[src;^-f[image.gif]]
^ifdef[^var[
src];<IMG SRC=^var[src]>;]

3.10.3. Получение информации о файле. Оператор stat

Формат вызова

^stat[что_вернуть;путь]

^stat[fsize;путь;обозначение_байта;обозначене_Кб;обозначение_Мб]

Аргументы

что_вернуть — тип возвращаемого значения.

путь — путь к файлу.

обозначение_байта — обозначение единицы измерения “байт”.

обозначене_Кб — обозначение единицы измерения “килобайт”.

обозначение_Мб — обозначение единицы измерения “мегабайт”.

Описание

Оператор возвращает информацию о файле.

Предусмотрены следующие типы информации:

size — размер файла в байтах.

fsize — форматированный размер файла. Если запрашивается этот тип информации, то оператор имеет не два аргумента, а пять. Результатом вызова является размер файла в мегабайтах, килобайтах или байтах. Полученное значение округляется до целого. Для обозначения единицы измерения используется указанное обозначение.

atime — время последнего обращения.

mtime — время последнего изменения.

ctime — время создания.

Примеры

Файл: <A HREF="big.zip">big.zip</A><BR>
Размер: ^stat[fsize;big.zip;bytes;Kb;Mb]<BR>
Последнее обновление: ^stat[mtime;big.zip]

3.10.4. Поиск файла. Оператор find

Формат вызова

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

^find[имя_файла;сообщение]

Аргументы

имя_файла — имя искомого файла.

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

Описание

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

Примеры

<IMG SRC="^find[section.gif;default.gif]">

Файл section.gif будет найден даже в том случае, если сам шаблон находится в каталоге, расположенном “глубже”, чем графический файл.

3.10.5. Загрузка в таблицу оглавления каталога. Оператор index

Формат вызова

^index[путь]

^index[путь;шаблон]

Аргументы

путь — путь к каталогу.

шаблон — шаблон для отбора файлов и каталогов.

Описание

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

Замечание. Шаблон — это регулярное выражение, соответствующее стандарту POSIX 1003.2, раздел 2.8, частичный перевод которого приведен в Приложении C. В дополнение к возможностям, которые устанавливает этот стандарт, в Парсере предусмотрены следующие обозначения:

\\ — обратная косая черта (“бэк-слэш”);
\t — символ табуляции;
\d — любая цифра от 0 до 9;
\s — пробел, символ табуляции, символ перевода строки.

Примеры

^context[dir;
         ^index[
pictures;\.(gif|jpg)$]
         Картинки в каталоге pictures:<BR>
         ^menu[^item[0]<BR>]
]

3.10.6. Выгрузка файла с сервера. Оператор download

Формат вызова

^download[полное_имя_файла]

^download[полное_имя_файла;локальное_имя_файла]

^download[полное_имя_файла;локальное_имя_файла;mime-type]

Аргументы

полное_имя_файла — полное имя выгружаемого файла.

локальное_имя_файла — имя файла, под которым посетителю предлагается записать файл на локальный диск.

mime-type — тип данных.

Описание

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

расширение_имени_файла_1 mime-type_1
...
расширение_имени_файла_N mime-type_N

Если тип данных не удается определить по таблице, используется тип application/octet-stream. Ниже приведен типичный текст макроса MIME_TYPES.

@MIME_TYPES[] определения mime-type для ^^download
zip           application/zip
doc           application/msword
xls           application/vnd.ms-excel
pdf           application/pdf
ppt           application/powerpoint
rtf           application/rtf
gif           image/gif
jpg           image/jpeg
png           image/png
tif           image/tiff
html          text/html
htm           text/html
txt           text/plain
mts           application/metastream
mid           audio/midi
midi          audio/midi
p3            audio/mpeg
ram           audio/x-pn-realaudio
rpm           audio/x-pn-realaudio-plugin
ra            audio/x-realaudio
wav           audio/x-wav
au            audio/basic
mpg           video/mpeg
avi           video/x-msvideo
mov           video/quicktime
swf           application/x-shockwave-flash

Примеры

^download[/restricted/file.zip;special_user]

3.10.7. Загрузка файла на сервер. Оператор upload

Формат вызова

^upload[поле_формы;что_вернуть]

^upload[поле формы;имя_файла]

Аргументы

поле_формы — имя поля формы типа FILE.

что_вернуть — тип возвращаемого значения.

имя_файла — имя копируемого файла.

Описание

Если аргумент что_вернуть имеет одно из значений name, size или value, то оператор вернет соответственно имя, размер или содержимое файла, “введенного” пользователем в это поле. В противном случае значение второго аргумента будет интерпретироваться как имя файла. Под этим именем “введенный” в поле файл будет загружен на сервер.

Примеры

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

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

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

3.10.8. Вложение файла в формате uuencode. Оператор upload

Формат вызова

^upload[поле_формы;uuencode;имя_файла]

Аргументы

поле_формы — имя поля формы типа FILE.

uuencode — обозначает, что используется именно эта форма оператора upload.

имя_файла — имя файла, указываемое в заголовке последовательности uuencode.

Описание

Оператор преобразует файл, “введенный” в поле формы, в формат uuencode и возвращает полученную последовательность. В заголовке последовательности указывается имя файла, переданное в аргументе имя_файла.

Примеры

^sendmail[to: user@domain.ru
from: mymail@domain.ru
subject: Веселые картинки
Content-Type: multipart/mixed^;
    boundary="----=_NextPart_000_009C_01BEA7AE.47C51900"

This is a multi-part message in MIME format.

------=_NextPart_000_009C_01BEA7AE.47C51900
Content-Type: text/plain^; charset=koi8-r

Вот картинка, которую ты так давно просил.

------=_NextPart_000_009C_01BEA7AE.47C51900
Content-Type: text/html^; name="^upload[picture;name]"
Content-Disposition: attachment^; filename="^upload[picture;name]"
Content-Transfer-Encoding: uuencode

^upload[picture;uuencode;^upload[picture;name]]

------=_NextPart_000_009C_01BEA7AE.47C51900--
]

3.10.9. Удаление файла. Оператор unlink

Формат вызова

^unlink[имя_файла]

Аргументы

имя_файла — имя удаляемого файла.

Описание

Оператор удаляет файл с указанным именем.

Примеры

^unlink[delme.txt]

3.10.10. Включение в код содержимого файла. Оператор include

Формат вызова

^include[путь]

^include[asis;путь]

Аргументы

путь — имя файла, который нужно обработать.

Описание

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

Если задан параметр asis, то включаемые данные не обрабатываются парсером, а вставляются "КАК ЕСТЬ".

Примеры


^include[
/inc/macros.inc]


E-mail: mailbox@parser.ruCopyright © 1997-2001 Студия Артемия Лебедева
`