|
|
| version 1.254, 2021/01/13 23:10:52 | version 1.255, 2024/12/14 20:37:19 |
|---|---|
| Line 220 odbc c:\drives\y\parser3project\odbc\deb | Line 220 odbc c:\drives\y\parser3project\odbc\deb |
| всегда есть кодировка UTF-8, она является кодировкой по-умолчанию для request и response | всегда есть кодировка UTF-8, она является кодировкой по-умолчанию для request и response |
| ВНИМАНИЕ: имя кодировки case insensitive | ВНИМАНИЕ: имя кодировки case insensitive |
| синтаксис | синтаксис |
| $имя[новое значение] | $имя[новое значение] |
| $имя(математическое выражение нового значения) | $имя(математическое выражение нового значения) |
| Line 228 odbc c:\drives\y\parser3project\odbc\deb | Line 229 odbc c:\drives\y\parser3project\odbc\deb |
| ^имя параметры вызов | ^имя параметры вызов |
| $имя.CLASS класс значения | $имя.CLASS класс значения |
| $имя.CLASS_NAME имя класса | $имя.CLASS_NAME имя класса |
| $имя[$.key[] () {}] конструктор элемента переменной-хэша $имя.key | $имя[$.key[] () {}] конструктор элемента переменной-хеша $имя.key |
| ^method[$.key[] () {}] конструктор элемента параметра-хеша $parameter.key | ^method[$.key[] () {}] конструктор элемента параметра-хеша $parameter.key |
| $CLASS.имя обращение к переменной класса | $CLASS.имя обращение к переменной класса |
| Line 243 odbc c:\drives\y\parser3project\odbc\deb | Line 244 odbc c:\drives\y\parser3project\odbc\deb |
| $переменная | $переменная |
| строка$переменная | строка$переменная |
| [код, вычисляющий строку] | [код, вычисляющий строку] |
| например: $хэш[$.возраст(88)] $достать[$.поле[возраст]] ^хэш.[$достать.поле].format{%05d} | например: $хеш[$.возраст(88)] $достать[$.поле[возраст]] ^хеш.[$достать.поле].format{%05d} |
| параметры := один или много параметров | параметры := один или много параметров |
| параметр := | параметр := |
| Line 269 int,double | Line 270 int,double |
| ^int/double:sql{query}[[$.limit(2) $.offset(4) $.default{0} $.bind[см. table::sql]]] | ^int/double:sql{query}[[$.limit(2) $.offset(4) $.default{0} $.bind[см. table::sql]]] |
| запрос, результат которого должен быть один столбец/одна строка | запрос, результат которого должен быть один столбец/одна строка |
| string | string |
| в выражении | в выражении |
| def значение равно "не пуста?" | def значение равно "не пуста?" |
| Line 360 string | Line 362 string |
| ^string:unescape[js|uri;escaped; $.charset[] ] декодирование переданного из js или uri | ^string:unescape[js|uri;escaped; $.charset[] ] декодирование переданного из js или uri |
| table | table |
| в выражении | в выражении |
| логическое значение равно "не пуста?" | логическое значение равно "не пуста?" |
| Line 438 hash | Line 441 hash |
| ^хеш.intersects[b] = bool | ^хеш.intersects[b] = bool |
| ^hash::sql{запрос}[[$.distinct(1) $.limit(2) $.offset(4) $.type[hash|string|table]]] | ^hash::sql{запрос}[[$.distinct(1) $.limit(2) $.offset(4) $.type[hash|string|table]]] |
| получается hash(ключи=значения первая колонка ответа) of hash(ключи=названия остальных колонкок ответа) или | получается hash(ключи=значения первая колонка ответа) of hash(ключи=названия остальных колонкок ответа) или |
| string=значение каждого элемента - строка, при надо указать ровно два столбца или | string=значение каждого элемента - строка, при этом надо указать ровно два столбца или |
| table=значение каждого элемента - таблица | table=значение каждого элемента - таблица |
| ^хеш.keys[[название колонки с ключами]] + таблица из одного столбца key или как передадут | ^хеш.keys[[название колонки с ключами]] + таблица из одного столбца key или как передадут |
| ^хеш.count[] | ^хеш.count[] |
| ^хеш.foreach[key;value]{тело}[[разделитель]|{разделитель который выполняется перед непустым очередным не первым телом}] | ^хеш.foreach[key;value]{тело}[[разделитель]|{разделитель который выполняется перед непустым очередным не первым телом}] |
| ^хеш.delete[ключ] удалить ключ | ^хеш.delete[ключ] удалить ключ |
| ^хеш.contain[ключ] - существует ли в хеше ключ (bool) | ^хеш.contain[ключ] - существует ли в хеше ключ (bool) |
| ^хэш.at[first|last][[key|value|hash]] | ^хеш.at[first|last][[key|value|hash]] |
| ^хэш.at([-]N)[[key|value|hash]] | ^хеш.at([-]N)[[key|value|hash]] |
| доступ к заданным элементам упорядоченного хеша | доступ к заданным элементам упорядоченного хеша |
| ^хэш.sort[key;value]{{ключеделатель строка}|(ключеделатель число)}[[desc|asc]] default=asc | ^хеш.sort[key;value]{{ключеделатель строка}|(ключеделатель число)}[[desc|asc]] default=asc |
| $обратный_хеш[^хеш.reverse[]] | $обратный_хеш[^хеш.reverse[]] |
| $отобранное[^хэш.select[key;value](выражение)[ $.limit(N) $.reverse(bool) $.default(bool) ]]] = хэш из ключей и значений, для которых условие истинно | $отобранное[^хеш.select[key;value](выражение)[ $.limit(N) $.reverse(bool) $.default(bool) ]] = хеш из ключей и значений, для которых условие истинно |
| hashfile | hashfile |
| ^hashfile::open[filename] | ^hashfile::open[filename] |
| Line 479 hashfile | Line 483 hashfile |
| $uid[$sessions.$sid] | $uid[$sessions.$sid] |
| array | |
| в выражении | |
| логическое значение равно "не пуст?" | |
| числовое значение равно count[] | |
| $массив.индекс, $массив.(выражение) | |
| возврат значения по заданному индексу | |
| $массив.индекс[значение], $массив.(выражение)[значение] | |
| присваивание значения по индексу | |
| $массив[значение;значение;...] | |
| создание массива с заданными значениями | |
| ^array::create[] | |
| ^array::create[значение;значение;...] | |
| создание массива с заданными значениями или пустого массива | |
| ^array::copy[копируемый массив или хеш с цифровыми ключами] | |
| копирование массива или хеша с цифровыми ключами | |
| ^массив.add[добавляемый массив или хеш с цифровыми ключами] | |
| добавление элементов из другого массива или хеша с перезаписью значений у совпадающих индексов | |
| ^массив.join[добавляемый массив или произвольный хеш] | |
| добавление элементов другого массива или хеша в конец массива | |
| ^массив.append[значение;значение;...] | |
| добавление элементов в конец массива | |
| ^массив.insert(индекс)[значение;значение;...] | |
| вставка элементов в указанную позицию массива | |
| ^массив.left(n) | |
| возвращает новый массив из n первых элементов массива | |
| ^массив.right(n) | |
| возвращает новый массив из n последних элементов массива | |
| ^массив.mid(m;n) | |
| возвращает новый массив, содержащий n инициализированных элементов массива, начиная с позиции m | |
| ^массив.delete(index) | |
| удаление элемента массива с оставлением пустого места | |
| ^массив.remove(index) | |
| удаление элемента со сдвигом последующих элементов на его место | |
| ^массив.push[значение] | |
| добавление элемента в конец массив | |
| ^массив.pop[] | |
| возвращает последний элемент и удаляет его из массива | |
| ^массив.contain(индекс) | |
| существует ли в массиве элемент по переданому индексу (bool) | |
| ^array::sql{запрос}[[ $.sparse(false) $.distinct(false) $.limit(2) $.offset(4) $.type[hash|string|table]]] | |
| создание массива на основе выборки из базы данных | |
| $.sparse(false), по умолчанию - создать обычный массив. Значения строк выборки последовательно добавляются в массив | |
| $.sparse(true) - создать разреженный массив. Первая колонка данных должна содержать индексы, | |
| по которым будут размещены значения (аналогично ^hash::sql{}) | |
| получается array of hash (ключи=названия остальных колонкок ответа) или | |
| string=значение каждого элемента - строка, при этом надо указать ровно два столбца или | |
| table=значение каждого элемента - таблица | |
| ^массив.keys[[название колонки с ключами]] | |
| таблица из одного столбца key или переданного названия с индексами инициализированных элементов массива | |
| ^массив.count[] | |
| количество инициализированных элементов массива | |
| ^массив.count[all] | |
| общее количество элементов массива, включая неинициализированные | |
| ^массив.foreach[index;value]{тело}[[разделитель]|{разделитель который выполняется перед непустым очередным не первым телом}] | |
| перебирает все инициализированные элементы массива | |
| ^массив.for[index;value]{тело}[[разделитель]|{разделитель который выполняется перед непустым очередным не первым телом}] | |
| перебирает все элементы массива | |
| ^массив.at[first|last][[key|value|hash]] | |
| ^массив.at([-]число)[[key|value|hash]] | |
| доступ к элементу массива по порядковому номеру | |
| ^массив.set[first|last][значение] | |
| ^массив.set([-]число)[значение] | |
| установка значения элемента массива по порядковому номеру | |
| ^массив.compact[] | |
| удаление неинициализированных элементов массива | |
| ^массив.compact[undef] | |
| удаление неинициализированных и пустых элементов массива | |
| ^массив.sort[key;value]{{ключеделатель строка}|(ключеделатель число)}[[desc|asc]] default=asc | |
| сортировка массива | |
| $обратный_массив[^массив.reverse[]] | |
| возвращает новый массив из элементов исходного в обратном порядке | |
| $отобранное[^массив.select[key;value](выражение)[ $.limit(N) $.reverse(bool) ]] | |
| отбор элементов массива, для которых условие истинно | |
| form | form |
| [берётся первый элемент из одноимённых из GET, потом первый из POST] | [берётся первый элемент из одноимённых из GET, потом первый из POST] |
| $form:поле = string/file | $form:поле = string/file |
| Line 487 form | Line 565 form |
| $form:fields = hash со всеми полями формы | $form:fields = hash со всеми полями формы |
| $form:tables.поле = table с одним столбцом "field" со значениями "поля", для множественных значений | $form:tables.поле = table с одним столбцом "field" со значениями "поля", для множественных значений |
| $form:files.поле = hash со значениями полей типа файл, ключи - 0, 1, ..., значение - файл | $form:files.поле = hash со значениями полей типа файл, ключи - 0, 1, ..., значение - файл |
| $form:imap = хэш с ключами 'x' и 'y' | $form:imap = хеш с ключами 'x' и 'y' |
| со значением ?1,2 приписки при использовании server-site image map | со значением ?1,2 приписки при использовании server-site image map |
| env | env |
| $env:переменная | $env:переменная |
| $env:fields хэш с переменными окружения | $env:fields хеш с переменными окружения |
| $env:PARSER_VERSION версия парсера | $env:PARSER_VERSION версия парсера |
| cookie | cookie |
| $cookie:имя считать старое или свежезаданное | $cookie:имя считать старое или свежезаданное |
| $cookie:имя[значение] на 90 дней | $cookie:имя[значение] на 90 дней |
| Line 505 cookie | Line 581 cookie |
| если дата, она будет преобразована к формату "Sun, 25-Aug-2002 12:03:45 GMT" | если дата, она будет преобразована к формату "Sun, 25-Aug-2002 12:03:45 GMT" |
| $cookie:fields = hash со всеми cookies | $cookie:fields = hash со всеми cookies |
| request | request |
| $request:query | $request:query |
| $request:uri | $request:uri |
| Line 520 request | Line 595 request |
| $request:body тело POST-запроса в виде текста | $request:body тело POST-запроса в виде текста |
| $request:body-file тело POST-запроса в виде файла | $request:body-file тело POST-запроса в виде файла |
| $request:body-charset кодировка POST-запроса | $request:body-charset кодировка POST-запроса |
| $request:headers хэш с заголовками запроса (без префикса HTTP_) | $request:headers хеш с заголовками запроса (без префикса HTTP_) |
| response | response |
| Line 557 regex | Line 632 regex |
| $шаблон.options строка с исходным текстом опций | $шаблон.options строка с исходным текстом опций |
| TODO: reflection | reflection |
| ^reflection:create[класс;конструктор[;пара;[мет[;ры]]]] вызывает указанный конструктор класса (не более 100 параметров) | ^reflection:create[класс;конструктор[;пара;[мет[;ры]]]] вызывает указанный конструктор класса (не более 100 параметров) |
| ^reflection:classes[] хеш со всеми классами. ключ -- имя класса, значение бывает methoded (класс с методами) или void | ^reflection:classes[] хеш со всеми классами. ключ -- имя класса, значение бывает methoded (класс с методами) или void |
| ^reflection:class[объект] класс переданного объекта | ^reflection:class[объект] класс переданного объекта |
| Line 713 mail | Line 788 mail |
| под win32 используется SMTP протокол, сервер задаётся | под win32 используется SMTP протокол, сервер задаётся |
| $MAIL.SMTP[smtp.domain.ru] | $MAIL.SMTP[smtp.domain.ru] |
| image | image |
| $картинка[^image::measure[DATA[; $.exif(bool) $.xmp(bool) $.xmp-charset[] $.video(bool) ]]] | $картинка[^image::measure[DATA[; $.exif(bool) $.xmp(bool) $.xmp-charset[] $.video(bool) ]]] |
| смотрит на .ext case insensitive, | смотрит на .ext case insensitive, |
| Line 897 json | Line 973 json |
| $.array[method-junction] пользовательский метод, которому будут передаваться массивы | $.array[method-junction] пользовательский метод, которому будут передаваться массивы |
| $.taint[язык преобразования] задаёт язык преобразования для всех строк результата | $.taint[язык преобразования] задаёт язык преобразования для всех строк результата |
| ]] | ]] |
| парсит json-строку в хэш | парсит json-строку в хеш |
| ^json:string[system or user object[; | ^json:string[system or user object[; |
| $.skip-unknown(false) отключить exception и выдавать 'null' при сериализации объектов с типами | $.skip-unknown(false) отключить exception и выдавать 'null' при сериализации объектов с типами |
| Line 1116 xnode | Line 1192 xnode |
| ^node.selectNumber[xpath/query/expression] = double if any or die | ^node.selectNumber[xpath/query/expression] = double if any or die |
| ^node.selectString[xpath/query/expression] = string if any or die | ^node.selectString[xpath/query/expression] = string if any or die |
| memory | memory |
| ^memory:compact[] собрать мусор, освободив место под новые данные | ^memory:compact[] собрать мусор, освободив место под новые данные |
| (предупреждение: память процесса никогда не освобождается) | (предупреждение: память процесса никогда не освобождается) |