Diff for /parser3/operators.ru.txt between versions 1.233 and 1.247

version 1.233, 2010/10/13 11:33:19 version 1.247, 2015/09/22 13:40:09
Line 91  Xне сделано, видимо, не будет сделано Line 91  Xне сделано, видимо, не будет сделано
             }              }
         }          }
     }      }
     ^exit[] + - прекращяет обработку запроса.   
         удобно сделать после выставления 401 ошибки  
     ^return[результат] + - отваливает из выполнения метода,   
         выдавая нестандартный результат  
     !^break[] + - обрывает цикл      !^break[] + - обрывает цикл
     !^continue[] + - обрывает итерацию цикла      !^continue[] + - обрывает итерацию цикла
     !^untaint[[as-is|file-spec|http-header|mail-header|uri|sql|js|xml|html|optimized-html|regex|parser-code]]{код}      !^untaint[[as-is|file-spec|http-header|mail-header|uri|sql|js|xml|html|optimized-html|regex|parser-code]]{код}
Line 336  odbc c:\drives\y\parser3project\odbc\deb Line 332  odbc c:\drives\y\parser3project\odbc\deb
     !^строка.pos[подстрока](позиция, с которой ищем)      !^строка.pos[подстрока](позиция, с которой ищем)
         <0 = не найдено          <0 = не найдено
     !^строка.replace[$таблица_подстановок_строка_на_строку]      !^строка.replace[$таблица_подстановок_строка_на_строку]
       !^строка.replace[$что;$на-что]
     !^строка.save[[append;]путь]      !^строка.save[[append;]путь]
     !^строка.save[путь[;$.charset[в какой кодировке сохраняем] $.append(true)]]      !^строка.save[путь[;$.charset[в какой кодировке сохраняем] $.append(true)]]
     !^строка.normalize[] выдает другую строку, в которой фрагменты на одном языке объединены      !^строка.normalize[] выдает другую строку, в которой фрагменты на одном языке объединены
Line 345  odbc c:\drives\y\parser3project\odbc\deb Line 342  odbc c:\drives\y\parser3project\odbc\deb
         default 'chars' -- whitespace chars          default 'chars' -- whitespace chars
     !^строка.append[string]      !^строка.append[string]
     !^строка.base64[] encode      !^строка.base64[] encode
     !^string:base64[encoded] decode      !^string:base64[encoded[;$.strict(true)]] decode
   
 !table  !table
     в выражении       в выражении 
Line 373  odbc c:\drives\y\parser3project\odbc\deb Line 370  odbc c:\drives\y\parser3project\odbc\deb
     !^таблица.offset[[whence]](5) сдвигает      !^таблица.offset[[whence]](5) сдвигает
         !whence=cur|set          !whence=cur|set
         !без whence - это cur          !без whence - это cur
     !^таблица.count[]      !^таблица.count[], ^таблица.count[rows] - количество строк в таблице
       !^таблица.count[columns] - для named таблицы количество столбцов (сокращение от $c[^таблица.columns[]]^c.count[])
       !^таблица.count[cells] - количество ячеек в текущей строке таблицы
     !^таблица.line[] 1-based offset      !^таблица.line[] 1-based offset
     !^таблица.sort{{ключеделатель строка}|(ключеделатель число)}[{desc|asc}] default=asc      !^таблица.sort{{ключеделатель строка}|(ключеделатель число)}[{desc|asc}] default=asc
     !^таблица.append{данные}      !^таблица.append{данные}
Line 546  odbc c:\drives\y\parser3project\odbc\deb Line 545  odbc c:\drives\y\parser3project\odbc\deb
     !^reflection:base[объект]              родительский класс переданного объекта      !^reflection:base[объект]              родительский класс переданного объекта
     !^reflection:base_name[объект]         имя родительского класса переданного объекта      !^reflection:base_name[объект]         имя родительского класса переданного объекта
     !^reflection:methods[класс]            хеш со списком методов указанного класса, значения -- строки 'native' или 'parser'      !^reflection:methods[класс]            хеш со списком методов указанного класса, значения -- строки 'native' или 'parser'
       !^reflection:method[класс или объект;имя метода] возвращает junction-method класса или объекта
     !^reflection:fields[класс или объект]  хеш со списком статических полей указанного класса или динамических полей указанного объекта      !^reflection:fields[класс или объект]  хеш со списком статических полей указанного класса или динамических полей указанного объекта
       !^reflection:field[класс или объект;имя поля]  возвращает значение указанного поля класса или объекта. getter-ы игнорируются.
       !^reflection:uid[класс или объект]     возвращает идентификатор объекта или класса
     !^reflection:method_info[класс;метод]  хеш с параметрами указанного метода класса      !^reflection:method_info[класс;метод]  хеш с параметрами указанного метода класса
          $.inherited[класс]                имя класса, где метод был определён (возвращается только если метод был определён в предке)           $.inherited[класс]                имя класса, где метод был определён (возвращается только если метод был определён в предке)
            $.overridden[класс]               имя класса, где метод был определён (возвращается только если метод был определён в предке)
          для native классов возвращается хеш:           для native классов возвращается хеш:
              .min_params(минимально необходимое число параметров)               .min_params(минимально необходимое число параметров)
              .max_params(максимально возможное число параметров)               .max_params(максимально возможное число параметров)
Line 558  odbc c:\drives\y\parser3project\odbc\deb Line 561  odbc c:\drives\y\parser3project\odbc\deb
     !^reflection:dynamical[[object or class, caller if absent]]    возвращает true, если метод был вызван из динамического контекста      !^reflection:dynamical[[object or class, caller if absent]]    возвращает true, если метод был вызван из динамического контекста
                                                                    при передаче параметра возвращает true, если передан динамический объект,                                                                     при передаче параметра возвращает true, если передан динамический объект,
                                                                    false если класс                                                                     false если класс
       !^reflection:delete[класс или объект;имя переменной]           удаляет переменную с указанным именем в указанном классе или объекте
   
   
 !mail  !mail
Line 746  odbc c:\drives\y\parser3project\odbc\deb Line 750  odbc c:\drives\y\parser3project\odbc\deb
     !^файл.save[text|binary;имя файла[;$.charset[в какой кодировке сохраняем]]]      !^файл.save[text|binary;имя файла[;$.charset[в какой кодировке сохраняем]]]
     !^file:delete[имя файла]      !^file:delete[имя файла]
     !^file:find[имя файла][{когда не нашли}]      !^file:find[имя файла][{когда не нашли}]
     !^file:list[путь[;шаблон-строка|шаблон-regex]] = table с колонкой name      !^file:list[путь[;шаблон-строка|шаблон-regex]] = table с колонками name dir
       !^file:list[путь;$.filter[шаблон-строка|шаблон-regex] $.stat(true)] = table с колонками name dir size [mca]date
     !^file::load[text|binary;!big.zip[;!domain_press_release_2001_03_01.zip][;опции]]      !^file::load[text|binary;!big.zip[;!domain_press_release_2001_03_01.zip][;опции]]
     !^file::create[text;имя;data]      !^file::create[text|binary;имя;data]
     !^file::create[text;имя;data[;$.charset[кодировка букв в создаваемом файле]]]      !^file::create[text|binary;имя;data[;$.charset[кодировка букв в создаваемом файле] $.content-type[...]]]
       !^file::create[string-or-file-content[;$.name[имя] $.mode[text|binary] $.content-type[...] $.charset[...]]]
     !$файл_который_был_loaded.size      !$файл_который_был_loaded.size
     !$файл_который_был_loaded_или_created.mode = text/binary      !$файл_который_был_loaded_или_created.mode = text/binary
     !^file::stat[имя файла]      !^file::stat[имя файла]
Line 773  odbc c:\drives\y\parser3project\odbc\deb Line 779  odbc c:\drives\y\parser3project\odbc\deb
         выполняется код          выполняется код
         разблокируется          разблокируется
     Xchmod[...] НЕТ И НЕ БУДЕТ, ЧТОБЫ НЕ МОГЛИ СДЕЛАТЬ executable и запустить, даже если ftp запрещает chmod.      Xchmod[...] НЕТ И НЕ БУДЕТ, ЧТОБЫ НЕ МОГЛИ СДЕЛАТЬ executable и запустить, даже если ftp запрещает chmod.
     !^file:dirname[/a/some.tar.gz]=/a      !^file:dirname[/a/some.tar.gz]=/a (работает аналогично комманде *nix)
     !^file:dirname[/a/b/]=/a      !^file:dirname[/a/b/]=/a (работает аналогично комманде *nix)
     !^file:basename[/a/some.tar.gz]=some.tar.gz      !^file:basename[/a/some.tar.gz]=some.tar.gz (работает аналогично комманде *nix)
       !^file:basename[/a/b/]=b (работает аналогично комманде *nix)
     !^file:justname[/a/some.tar.gz]=some.tar      !^file:justname[/a/some.tar.gz]=some.tar
     !^file:justext[/a/some.tar.gz]=gz      !^file:justext[/a/some.tar.gz]=gz
     !/some/page.html: ^file:fullpath[a.gif] => /some/a.gif      !/some/page.html: ^file:fullpath[a.gif] => /some/a.gif
     !^файл.sql-string[] внутри ^connect даст правильно escaped строку, которую можно в запрос отдать      !^файл.sql-string[] внутри ^connect даст правильно escaped строку, которую можно в запрос отдать
     X^file::sql[[имя_файла_для_download]]{}      X^file::sql[[имя_файла_для_download]]{query}
     !^file::sql{}[[      !^file::sql{query}[[
         $.name[имя_файла_для_download]          $.name[имя_файла_для_download]
         $.content-type[пользовательский content-type]          $.content-type[пользовательский content-type]
     ]]      ]]
Line 853  odbc c:\drives\y\parser3project\odbc\deb Line 860  odbc c:\drives\y\parser3project\odbc\deb
                                      last  -- будет оставлен последний встретившийся элемент                                       last  -- будет оставлен последний встретившийся элемент
                                      all   -- будут оставлены все элементы. при этом элементы, начиная со 2                                       all   -- будут оставлены все элементы. при этом элементы, начиная со 2
                                               получат числовые суффиксы (key_2 итд)                                                получат числовые суффиксы (key_2 итд)
                                      по умолчанию дублирующиеся ключи приводыт к exception                                       по умолчанию дублирующиеся ключи приведут к exception
         $.object[method-junction]    пользовательский метод, которому будут передаваться все разобранные пары          $.object[method-junction]    пользовательский метод[ключ;объект], которому будут передаваться все разобранные 
                                      ключ/значение                                       объекты и ключи объекта, метод возвращает новый объект
           $.array[method-junction]     пользовательский метод, которому будут передаваться массивы
     ]]      ]]
         парсит json-строку в хэш          парсит json-строку в хэш
     !^json:string[system or user object[;      !^json:string[system or user object[;
         $.skip-unknown(false)    отключить exception и выдавать 'null' при сериализации объектов с типами          $.skip-unknown(false)    отключить exception и выдавать 'null' при сериализации объектов с типами
                                  отличных от void, bool, string, int, double, date, table, hash и file                                   отличных от void, bool, string, int, double, date, table, hash и file
         $.date[sql-string|gmt-string|unix-timestamp]    формат вывода даты, по умолчанию -- sql-string          $.indent(true)           форматировать результирующую строку табуляциями по глубине вложенности
         $.table[object|array]    формат вывода таблицы, по умолчанию -- object          $.date[sql-string|gmt-string|iso-string|unix-timestamp]    формат вывода даты, по умолчанию -- sql-string
           $.table[object|array|compact]    формат вывода таблицы, по умолчанию -- object
                                  object: [{"c1":"v11","c2":"v12",...},{"c1":"v21","c2":"v22",...},...]                                   object: [{"c1":"v11","c2":"v12",...},{"c1":"v21","c2":"v22",...},...]
                                  array:  [["c1","c2",...] || null (for nameless),["v11","v12",...],...]                                   array:  [["c1","c2",...] || null (for nameless),["v11","v12",...],...]
         $.file[text|base64]      вывести тело файла в указанном виде (по умолчание тело файла                                    compact:  ["v11" || ["v11","v12",...],...]
           $.file[text|base64|stat] вывести тело файла в указанном виде (по умолчание тело файла 
                                  не попадает в output)                                   не попадает в output)
           $.xdoc[hash]             параметры преобразования xdoc в строку (как в ^xdoc.string[])
         $.тип[method-junction]   любой тип можно вывести с помощью пользовательского метода, который           $.тип[method-junction]   любой тип можно вывести с помощью пользовательского метода, который 
                                  должен принимать 2 параметра: значение и параметры                                   должен принимать 3 параметра: ключ, объект данного типа и опции 
                                    вызова ^json:string[]
     ]]      ]]
         сериализует системный или пользовательский объект в json-строку          сериализует системный или пользовательский объект в json-строку
   
Line 876  odbc c:\drives\y\parser3project\odbc\deb Line 888  odbc c:\drives\y\parser3project\odbc\deb
 !date  !date
     !время типа time можно использовать в выражениях, подставляет       !время типа time можно использовать в выражениях, подставляет 
         количество дней с epoch [1 января 1970 (UTC)], дробное          количество дней с epoch [1 января 1970 (UTC)], дробное
     !всё происходит в localtime,       !строковое значение в местном времени, численное в UTC
     !временная зона задаётся вне parser средствами OS      !по умолчанию используется установленная средствами OS временная зона
     $date:UTC-offset  сколько дней надо прибавить,чтобы попасть в local время  
     $date:TZ  наш часовой пояс, дробное, в часах (где-то есть с точностью до получаса)  
     !^date::now[]      !^date::now[]
     !^date::now(смещение в днях) выдаёт сейчас+смещение      !^date::now(смещение в днях) выдаёт сейчас+смещение
     !^date::create(дней с epoch) // старое имя set      !^date::today[] дата на 00:00:00 текущего дня
     !^date::create(year;month[;day[;hour[;minute[;second]]]]) // старое имя set      !^date::create(дней с epoch)
       !^date::create(year;month[;day[;hour[;minute[;second]]]])
     !^date::create[дата в формате %Y-%m-%d %H:%M:%S]      !^date::create[дата в формате %Y-%m-%d %H:%M:%S]
         для удобного создания по значению из базы          для удобного создания по значению из базы
         формат1: %Y[-%m[-%d[ %H[:%M[:%S]]]]]          формат1: %Y[-%m[-%d[ %H[:%M[:%S]]]]]
         формат2: %H:%M[:%S]          формат2: %H:%M[:%S]
       !^date::create[дата в формате %Y-%m-%dT%H:%M[:%S]TZ]
           для создания по значению в формате ISO 8601
           формат TZ: Z(UTC) или +-hour[:minute] (смещение от UTC)
     !^date::unix-timestamp()      !^date::unix-timestamp()
     !^дата.unix-timestamp[]      !^дата.unix-timestamp[]
     !$дата.year month day  hour minute second  weekday yearday(0...) daylightsaving TZ weekyear      !$дата.year month day  hour minute second  weekday yearday(0...) daylightsaving TZ weekyear
Line 895  odbc c:\drives\y\parser3project\odbc\deb Line 909  odbc c:\drives\y\parser3project\odbc\deb
         TZ="" << локальная зона          TZ="" << локальная зона
     !^дата.roll[year|month|day](+-смещение) сдвигает дату      !^дата.roll[year|month|day](+-смещение) сдвигает дату
     !^дата.roll[TZ;Новая зона] говорит, что дата в таком-то часовом поясе: влияет на .hour & Co      !^дата.roll[TZ;Новая зона] говорит, что дата в таком-то часовом поясе: влияет на .hour & Co
     !^дата.sql-string[] %Y-%m-%d %H:%M:%S      !^date:roll[TZ;Новая зона] говорит, что по умолчанию все даты в таком-то часовом поясе
       !^дата.sql-string[[datetime|date|time]]
           datetime или без параметра -- %Y-%m-%d %H:%M:%S
           date                       -- %Y-%m-%d
           time                       -- %H:%M:%S
         where published='^дата.sql-string[]'          where published='^дата.sql-string[]'
     !^date:calendar[rus|eng](год;месяц) выдаёт неименованную таблицу       !^date:calendar[rus|eng](год;месяц) выдаёт неименованную таблицу 
         столбцы: 0..6, week, year          столбцы: 0..6, week, year
Line 904  odbc c:\drives\y\parser3project\odbc\deb Line 922  odbc c:\drives\y\parser3project\odbc\deb
     !^date:last-day(год;месяц) вернёт последний день месяца      !^date:last-day(год;месяц) вернёт последний день месяца
     !^дата.last-day[] вернёт последний день месяца $дата      !^дата.last-day[] вернёт последний день месяца $дата
     !^дата.gmt-string[]  Fri, 23 Mar 2001 09:32:23 GMT      !^дата.gmt-string[]  Fri, 23 Mar 2001 09:32:23 GMT
       !^дата.iso-string[]  2001-03-23T06:32:23+3
   
   
 xdoc(xnode)  xdoc(xnode)

Removed from v.1.233  
changed lines
  Added in v.1.247


E-mail: