--- parser3/operators.ru.txt 2010/08/04 15:20:31 1.230 +++ parser3/operators.ru.txt 2011/05/18 02:17:34 1.239 @@ -181,7 +181,7 @@ odbc c:\drives\y\parser3project\odbc\deb !в catch коде $exception.handled[cache] ^rem{флаг, что exception обработан} !^cache[файл][expires date]{код}[{catch код}] !абсолютное задание времени - X^cache[файл] удалить файл [не ругает, если его нет] // такое было, больше не будет, делать ^cache(0) + !^cache[файл] удалить файл [не ругает, если его нет] !^cache(секунд) !^cache[expires date] !сигнализирует вышестоящему ^cache "уменьши до стольких-то 'секунд'/'expires'" @@ -373,7 +373,9 @@ odbc c:\drives\y\parser3project\odbc\deb !^таблица.offset[[whence]](5) сдвигает !whence=cur|set !без whence - это cur - !^таблица.count[] + !^таблица.count[], ^таблица.count[rows] - количество строк в таблице + !^таблица.count[columns] - для named таблицы количество столбцов (сокращение от $c[^таблица.columns[]]^c.count[]) + !^таблица.count[cells] - количество ячеек в текущей строке таблицы !^таблица.line[] 1-based offset !^таблица.sort{{ключеделатель строка}|(ключеделатель число)}[{desc|asc}] default=asc !^таблица.append{данные} @@ -549,6 +551,7 @@ odbc c:\drives\y\parser3project\odbc\deb !^reflection:fields[класс или объект] хеш со списком статических полей указанного класса или динамических полей указанного объекта !^reflection:method_info[класс;метод] хеш с параметрами указанного метода класса $.inherited[класс] имя класса, где метод был определён (возвращается только если метод был определён в предке) + $.overridden[класс] имя класса, где метод был определён (возвращается только если метод был определён в предке) для native классов возвращается хеш: .min_params(минимально необходимое число параметров) .max_params(максимально возможное число параметров) @@ -836,12 +839,46 @@ odbc c:\drives\y\parser3project\odbc\deb !^math:crc32[string] вычисляет crc32 строки !^math:sha1[string] + !^math:convert[number](base-from;base-to) преобразует строку с числом из одной системы исчисления в другую !inet !^inet:ntoa(long) !^inet:aton[IP] +!json + !^json:parse[-json-строка-[; + $.depth(максимальная глубина, default == 19) + $.double(false) отключить встроенный парсинг чисел с плавающей точкой (по умолчанию включен) + в этом случае они попадут в результирующий объект как строки + $.distinct[first|last|all] как будет происходить разбор дублирующихся ключей у объектов + first -- будет оставлен первый встретившийся элемент + last -- будет оставлен последний встретившийся элемент + all -- будут оставлены все элементы. при этом элементы, начиная со 2 + получат числовые суффиксы (key_2 итд) + по умолчанию дублирующиеся ключи приведут к exception + $.object[method-junction] пользовательский метод[ключ;объект], которому будут передаваться все разобранные + объекты и ключи объекта, метод возвращает новый объект + ]] + парсит json-строку в хэш + !^json:string[system or user object[; + $.skip-unknown(false) отключить exception и выдавать 'null' при сериализации объектов с типами + отличных от void, bool, string, int, double, date, table, hash и file + $.indent(true) форматировать результирующую строку табуляциями по глубине вложенности + $.date[sql-string|gmt-string|unix-timestamp] формат вывода даты, по умолчанию -- sql-string + $.table[object|array|compact] формат вывода таблицы, по умолчанию -- object + object: [{"c1":"v11","c2":"v12",...},{"c1":"v21","c2":"v22",...},...] + array: [["c1","c2",...] || null (for nameless),["v11","v12",...],...] + compact: ["v11" || ["v11","v12",...],...] + $.file[text|base64] вывести тело файла в указанном виде (по умолчание тело файла + не попадает в output) + $.xdoc[hash] параметры преобразования xdoc в строку (как в ^xdoc.string[]) + $.тип[method-junction] любой тип можно вывести с помощью пользовательского метода, который + должен принимать 3 параметра: ключ, объект данного типа и опции + вызова ^json:string[] + ]] + сериализует системный или пользовательский объект в json-строку + !date !время типа time можно использовать в выражениях, подставляет