Парсер
Парсер служит для фильтрации входных данных, но может обрабатывать и информацию на выходе, для чего работает в двух состояниях — prepare и process. Установить фильтры можно на несколько групп элементов:
- input — на все поля типа input.
- textarea — на все поля типа textarea, включая поля с редактором.
- comment — на все комментариев. Комментарии были выделены отдельно для удобства их фильтрации.
- other — все другие элементы.
// Пост-процессная обработка информация
$node['body'] = $this->parser->process($node['body'],'textarea');
$this->_template('!nodes node',$node);
// Подготовка информации для запись в базу данных осуществляется автоматически
$data = $this->parser->prepare($data,$type);
Хуки парсера
Достаточно добавить название функции обработки в массивы пост-процессной или подготовительной обработок./**
* Add parser rules for jevix processing.
*
* @param object $Parser
* @return void
*/
function jevix_parser_construct_(&$Parser){
/*
* Можно по простому
* $Parser->prepare['input'][] = 'parse_jevix|comment';
* А можно и на определенное место в массиве
*/
array_insert($Parser->prepare['textarea'],'parse_jevix|node',0);
array_insert($Parser->prepare['comment'],'parse_jevix|comment',0);
/*
* Обратите внимание на строку с названием функции parse_jevix|node
* parse_jevix -- вызов функции без параметров
* parse_jevix|node -- вызов функции с параметром node
*/
// Вызов метода определенной модели
array_insert($Parser->prepare['textarea'],array('Textile','parse'),0);
// Вызов метода (с параметрами) определенной модели
array_insert($Parser->prepare['textarea'],array('Textile','parse|FALSE|TRUE'),0);
}
// ------------------------------------------------------------------------
/**
* Parse code with jevix
*
* @param string $value Recieved data.
...
* @return string
*/
function parse_jevix($value,[$type = 'node',$autobr = TRUE]){
...
return $value;
}
// ------------------------------------------------------------------------