--- parser3/operators.txt 2009/07/08 09:00:55 1.219 +++ parser3/operators.txt 2009/09/18 09:16:49 1.227 @@ -296,7 +296,7 @@ odbc c:\drives\y\parser3project\odbc\deb пример: ^if(def $form:name) не пуста? ^if($user.isAlive) истина? [автопреобразование к числу, не ноль?] - !^string::sql{query}[[$.limit(1) $.offset(4) $.default{n/a} $.bind[см. table::sql]]] + !^string:sql{query}[[$.limit(1) $.offset(4) $.default{n/a} $.bind[см. table::sql]]] результат запроса должен быть один столбец/одна строка !^строка.int[] .int(default) целочисленное значение строки. если ломается преобразование, берётся default @@ -336,6 +336,7 @@ odbc c:\drives\y\parser3project\odbc\deb <0 = не найдено !^строка.replace[$таблица_подстановок_строка_на_строку] !^строка.save[[append;]путь] + !^строка.save[путь[;$.charset[в какой кодировке сохраняем] $.append(true)]] !^строка.normalize[] выдает другую строку, в которой фрагменты на одном языке объединены полезно делать перед сложными match операциями, если вы знаете, что входная строка состоит из большого числа фрагментов @@ -533,6 +534,28 @@ odbc c:\drives\y\parser3project\odbc\deb ^шаблон.load[filespec] +!reflection + !^reflection:create[класс;конструктор[;пара;[мет[;ры]]]] вызывает указанный конструктор класса (не более 100 параметров) + !^reflection:classes[] хеш со всеми классами. ключ -- имя класса, значение бывает methoded (класс с методами) или void + !^reflection:class[объект] класс переданного объекта + !^reflection:class_name[объект] имя класса переданного объекта + !^reflection:base[объект] родительский класс переданного объекта + !^reflection:base_name[объект] имя родительского класса переданного объекта + !^reflection:methods[класс] хеш со списком методов указанного класса, значения -- строки 'native' или 'parser' + !^reflection:fields[класс или объект] хеш со списком статических полей указанного класса или динамических полей указанного объекта + !^reflection:method_info[класс;метод] хеш с параметрами указанного метода класса + $.inherited[класс] имя класса, где метод был определён (возвращается только если метод был определён в предке) + для native классов возвращается хеш: + .min_params(минимально необходимое число параметров) + .max_params(максимально возможное число параметров) + .call_type[dynamic|static|any] + для parser классов возвращается хеш: + ключ -- номер параметра (0, 1, ...), значение - имя параметра + !^reflection:dynamical[[object or class, caller if absent]] возвращает true, если метод был вызван из динамического контекста + при передаче параметра возвращает true, если передан динамический объект, + false если класс + + !mail !$mail.received=MESSAGE: .from @@ -716,7 +739,7 @@ odbc c:\drives\y\parser3project\odbc\deb !$файл_из_post.name !$файл_из_post.size !$файлtиз_post.text - !^файл.save[text|binary;имя файла] + !^файл.save[text|binary;имя файла[;$.charset[в какоq кодировке сохраняем]]] !^file:delete[имя файла] !^file:find[имя файла][{когда не нашли}] !^file:list[путь[;шаблон-строка|шаблон-regex]] = table с колонкой name