Оператор counterMisha v.3 [19 декабря 2002]
@counter[i_file_name][file_name;file;count]
^if(!def $i_file_name){^throw[counter;file_name must be specified]}
$file_name[${i_file_name}.count]
^file:lock[${file_name}.lock]{
^try{
$file[^file::load[text;$file_name]]
$result($file.text)
}{
$exception.handled(true)
$result(0)
}
$count[^eval($result+1)]
^count.save[$file_name]
}
#end @counter[]
Примеры вызова:
@main[]
^counter[/news/index]
Данный оператор работает аналогично одноименному оператору 2 парсера: «Оператор возвращает значение хранимого в файле счетчика, а затем увеличивает его на 1. Если файл с указанным именем не существует, то он будет создан. Значение счетчика в этом случае будет установлено равным 0.»
Если парсеру будет недостаточно прав для того, чтобы записать файл — будет фатальная ошибка, если вы хотите другого поведения оператора — исправьте его код.
|