parser

Оператор counter

Misha 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.»

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