Операторы, определяемые пользователем

Иногда оказывается, что каких-то операторов в языке не хватает. Parser позволяет определить собственные операторы, которые затем можно будет использовать наравне с системными. Операторами в Parser считаются методы класса MAIN. Добавляя новые методы в этот класс, мы расширяем базовый набор операторов.

Внимание! При описании оператора можно использовать и не локальные переменные, при этом происходит чтение и запись в поля класса 
MAIN.

Пользовательские операторы могут определяться и в отдельных текстовых файлах без заголовка
@CLASS, которые подключаются к нужным разделам сайта. Если в таком файле определить оператор (написав, скажем, @include[]), то при обращении ^include[…] всегда будет вызываться пользовательский оператор.

Внимание! Если определить оператор, одноименный с системным, то всегда будет вызываться пользовательский. При этом системный оператор вызвать нельзя никак. Стоит делать как можно меньше пользовательских операторов, используя вместо них статические методы пользовательских классов.

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

^news:help[]
^forum:help[]
^search:help[]

Примеры
Поместим этот код:
@default[a;b]
^if(
def $a){$a}{$b}

в файл
operators.p, в корень сайта.

Там, где необходимы дополнительные операторы, нужно подключить этот модуль. Например, в корневом
auto.p напишем:
@USE
/operators.p

Теперь не только на любой странице, но, главное, в любом пользовательском классе можно будет воспользоваться конструкцией
^default[$form:name;Аноним]

Подробности - в разделе «Определяемые пользователем методы и операторы».


Copyright © 1997–2024 Art. Lebedev Studio | http://www.artlebedev.ru Дата обновления: 14.10.2024