parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Класс MAIN, обработка запроса

egr 05.03.2003 14:03

Класс MAIN, обработка запроса


Parser обрабатывает запрошенный документ следующим образом:

1.
Считываются, компилируются и инициализируются Конфигурационный файл; затем все файлы с именем auto.p, поиск которых производится начиная от корня веб-пространства, и ниже по структуре каталогов, вплоть до каталога с запрошенным документом; наконец, сам запрошенный документ.
Все вместе они составляют определение класса MAIN.
Инициализация заключается в вызове метода auto каждого загруженного файла. Если определение этого метода содержит параметр, при вызове в нем будет передано имя загруженного файла.
Примечание: результат работы метода посетителю не выводится.

2.
Затем вызывается без параметров метод main класса MAIN.
Т.е. в любом из перечисленных файлов может быть определен метод main, и будет вызван тот, который был определен последним - скажем, определение этого метода в запрошенном документе перекрывает все остальные возможные определения, и будет вызван именно он.
Результат работы этого метода будет передан пользователю, если не был определен метод postprocess.
Если в файле не определен ни один метод, то все его тело считается определением метода main.
Примечание: задание $response:body[нестандартного ответа] переопределяет текст, получаемый пользователем.
Примечание: если в файле не определен ни один метод, считается, что файл определяет метод main без параметров.

3.
Если в классе MAIN определен метод postprocess, то результат работы метода main передается единственным параметром этому методу, и пользователь получит уже его результат работы.
Таким образом вы получаете возможность «дополнительной полировки» результата работы вашего кода.

Простой пример.

Добавление такого определения, скажем, в файл auto.p в корне вашего веб-пространства…
@postprocess[body]
^body.match[шило][g]{мыло}

…приведет к замене одних слов на другие в результатах обработки всех страниц.
Лениво читать? :)