Diff for /parser3/operators.ru.txt between versions 1.254 and 1.255

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[] собрать мусор, освободив место под новые данные
     (предупреждение: память процесса никогда не освобождается)      (предупреждение: память процесса никогда не освобождается)

Removed from v.1.254  
changed lines
  Added in v.1.255


E-mail: