Diff for /parser3/operators.ru.txt between versions 1.243 and 1.248

version 1.243, 2013/07/21 15:16:44 version 1.248, 2015/10/29 18:33:00
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|uri|http-header|mail-header|sql|js|json|parser-code|regex|xml|html|optimized-[as-is|xml|html]]]{код}
         default as-is          default as-is
     !^taint[[lang]][код]      !^taint[[lang]][код]
         default "just tainted, language unknown"          default "just tainted, language unknown"
Line 111  Xне сделано, видимо, не будет сделано Line 107  Xне сделано, видимо, не будет сделано
     !^connect[protocol://строка соединения]]{код с ^sql[...]-ями}      !^connect[protocol://строка соединения]]{код с ^sql[...]-ями}
         !mysql://user:pass@{host[:port]|[/unix/socket]}/database?          !mysql://user:pass@{host[:port]|[/unix/socket]}/database?
             ClientCharset=parser-charset << charset in which parser thinks client works              ClientCharset=parser-charset << charset in which parser thinks client works
             charset=cp1251_koi8&              charset=UTF-8&
             timeout=3&              timeout=3&
             compress=0&              compress=0&
             named_pipe=1&              named_pipe=1&
Line 149  Xне сделано, видимо, не будет сделано Line 145  Xне сделано, видимо, не будет сделано
 #sql drivers  #sql drivers
 $SQL[  $SQL[
     $.drivers[^table::create{protocol   driver  client      $.drivers[^table::create{protocol   driver  client
 mysql   /www/parser3/libparser3mysql.so /usr/local/lib/mysql/libmysqlclient.so  mysql   /www/parser3/libparser3mysql.so libmysqlclient.so
 pgsql   /www/parser3/libparser3pgsql.so /usr/local/pgsql/lib/libpq.so  pgsql   /www/parser3/libparser3pgsql.so libpq.so
 oracle  /www/parser3/libparser3oracle.so        /u01/app/oracle/product/8.1.5/lib/libclntsh.so?ORACLE_HOME=/u01/app/oracle/product/8.1.5&ORA_NLS33=/u01/app/oracle/product/8.1.5/ocommon/nls/admin/data  oracle  /www/parser3/libparser3oracle.so        /u01/app/oracle/product/8.1.5/lib/libclntsh.so?ORACLE_HOME=/u01/app/oracle/product/8.1.5&ORA_NLS33=/u01/app/oracle/product/8.1.5/ocommon/nls/admin/data
 sqlite  /www/parser3/libparser3sqlite.so        /usr/local/sqlite/lib/sqlite3.so  sqlite  /www/parser3/libparser3sqlite.so        sqlite3.so
 odbc    c:\drives\y\parser3project\odbc\debug\parser3odbc.dll  odbc    c:\drives\y\parser3project\odbc\debug\parser3odbc.dll
 }]  }]
 ]  ]
Line 187  odbc c:\drives\y\parser3project\odbc\deb Line 183  odbc c:\drives\y\parser3project\odbc\deb
         !сигнализирует вышестоящему ^cache "уменьши до стольких-то 'секунд'/'expires'"          !сигнализирует вышестоящему ^cache "уменьши до стольких-то 'секунд'/'expires'"
         !в пределе: ^cache(0) отменить кэширование          !в пределе: ^cache(0) отменить кэширование
     !^cache[] выдаёт текущую expires date      !^cache[] выдаёт текущую expires date
     X^cache[read]   
         сигнализирует вышестоящему ^cache "взять скэшированное насильно, игнорируя expires",  
         выдаёт bool "получилось/нет"  
         !^sleep(seconds)  
   
   
     Xесть глобальный флажок в свойствах/командной строке "не оптимизировать"  
     !и есть исключение: ^untaint[html]{код} не оптимизируется   
         Xбезотностительно флажка  
   
     !у всех методов есть локальная переменная $result, если в неё что положить,      !у всех методов есть локальная переменная $result, если в неё что положить,
     !то _это_ будет результатом макроса, а не его тело      !то _это_ будет результатом макроса, а не его тело
Line 256  odbc c:\drives\y\parser3project\odbc\deb Line 243  odbc c:\drives\y\parser3project\odbc\deb
   
   
 !void  !void
     !^имя.length[]      !доступны все методы, присутствующие у объекта класса string, результат как у пустой строки
         0  
     !^имя.pos[...]  
         -1  
     !^имя.left(n)  
        ничего не выдаёт  
     !^имя.right(n)  
        ничего не выдаёт  
     !^имя.mid(p[;n])  
        ничего не выдаёт  
     !^имя.int[]  (default)   
         0 или default  
     !^имя.double[] (default)  
         0 или default  
     !^имя.bool[] (default)  
         false или default  
     !^void:sql{запрос без результата}{$.bind[см. table::sql]}      !^void:sql{запрос без результата}{$.bind[см. table::sql]}
   
   
Line 326  odbc c:\drives\y\parser3project\odbc\deb Line 298  odbc c:\drives\y\parser3project\odbc\deb
     !^строка.{l|r}split[разделитель] таблица из столбца $piece      !^строка.{l|r}split[разделитель] таблица из столбца $piece
         оставлен для совместимости          оставлен для совместимости
     !^строка.upper|lower[]       !^строка.upper|lower[] 
     X^строка.truncate(предел терпенья) стиль :(  
     !^строка.length[]      !^строка.length[]
     !^строка.mid(P[;N])      !^строка.mid(P[;N])
         без N - "до конца строки"          без N - "до конца строки"
     !^строка.left(N)      !^строка.left(N), -1 выдает всю строку
     !^строка.right(N)      !^строка.right(N)
     !^строка.pos[подстрока]      !^строка.pos[подстрока]
     !^строка.pos[подстрока](позиция, с которой ищем)      !^строка.pos[подстрока](позиция, с которой ищем)
Line 344  odbc c:\drives\y\parser3project\odbc\deb Line 315  odbc c:\drives\y\parser3project\odbc\deb
         состоит из большого числа фрагментов          состоит из большого числа фрагментов
     !^строка.trim[start|both|end|left|right[;chars]] выкидывает chars из начала/конца/и начала и конца      !^строка.trim[start|both|end|left|right[;chars]] выкидывает chars из начала/конца/и начала и конца
         default 'chars' -- whitespace chars          default 'chars' -- whitespace chars
     !^строка.append[string]      !^строка.trim[chars] выкидывает chars из начала и конца
     !^строка.base64[] encode      !^строка.base64[] encode
     !^string:base64[encoded[;$.strict(true)]] decode      !^string:base64[encoded[;$.strict(true)]] decode
       !^строка.idna[] IDNA кодирование, поддержка кириллических доменов
       !^string:idna[encoded] IDNA декодирование, поддержка кириллических доменов
       !^строка.js-escape[] кодирование для передачи в JS (%uXXXX)
       !^string:js-unescape[escaped] декодирование переданного из js
       !^string:unescape[js|uri;escaped; $.charset[] ] декодирование переданного из js или uri
   
 !table  !table
     в выражении       в выражении 
Line 368  odbc c:\drives\y\parser3project\odbc\deb Line 344  odbc c:\drives\y\parser3project\odbc\deb
         в параметре bind передать hash, из которого возьмётся(или куда запишется) значение          в параметре bind передать hash, из которого возьмётся(или куда запишется) значение
     !^таблица.save[[nameless|append;]путь[;опции, см. load]]      !^таблица.save[[nameless|append;]путь[;опции, см. load]]
     !$таблица.поле      !$таблица.поле
       !$таблица.поле[новое значение]
     !$таблица.fields  из named таблицы выдаёт текущую запись как Hash      !$таблица.fields  из named таблицы выдаёт текущую запись как Hash
     !^таблица.menu{тело}[[разделитель]]      !^таблица.menu{тело}[[разделитель]]
     !^таблица.offset[] печатает offset      !^таблица.offset[] печатает offset
Line 375  odbc c:\drives\y\parser3project\odbc\deb Line 352  odbc c:\drives\y\parser3project\odbc\deb
         !whence=cur|set          !whence=cur|set
         !без whence - это cur          !без whence - это cur
     !^таблица.count[], ^таблица.count[rows] - количество строк в таблице      !^таблица.count[], ^таблица.count[rows] - количество строк в таблице
     !^таблица.count[columns] - для named таблицы количество столбцов (сокращение от $c[^таблица.columns[]]^c.count[])      !^таблица.count[columns] - количество столбцов таблицы
     !^таблица.count[cells] - количество ячеек в текущей строке таблицы      !^таблица.count[cells] - количество ячеек в текущей строке таблицы
     !^таблица.line[] 1-based offset      !^таблица.line[] 1-based offset
     !^таблица.sort{{ключеделатель строка}|(ключеделатель число)}[{desc|asc}] default=asc      !^таблица.sort{{ключеделатель строка}|(ключеделатель число)}[{desc|asc}] default=asc
     !^таблица.append{данные}      !^таблица.append{данные}
     X^таблица.insert{данные}[(n)] добавить запись       !^таблица.append[ $.имя столбца[значение столбца] ]
         на текущую позицию [добавить запись на позицию n]      !^таблица.insert{данные} добавить запись на текущую позицию
     X^таблица.remove(position[;count]) - стирает запись       !^таблица.insert[ $.имя столбца[значение столбца] ]
         из текущей позиции [стирает запись из конкретной позиции]       !^таблица.delete[] - стирает запись с текущей позиции
             [стирает count записей]      !^таблица.join[таблица][$.limit(1) $.offset(5) $.offset[cur]] - добавляет записи из таблицы.
     !^таблица.join[таблица][$.limit(1) $.offset(5) $.offset[cur]] - добавляет записи из таблицы.   
         таблицы должны иметь одинаковую структуру.          таблицы должны иметь одинаковую структуру.
     !^таблица.flip[] выдаёт транспонированную, надо куда-то сложить, потом пользовать      !^таблица.flip[] выдаёт транспонированную, надо куда-то сложить, потом пользовать
     !^таблица.locate[поле;значение][[$.limit(1) $.offset(5) $.offset[cur] $.reverse(1)]]       !^таблица.locate[поле;значение][[$.limit(1) $.offset(5) $.offset[cur] $.reverse(1)]] 
Line 424  odbc c:\drives\y\parser3project\odbc\deb Line 400  odbc c:\drives\y\parser3project\odbc\deb
     !^hash::sql{запрос}[[$.distinct(1) $.limit(2) $.offset(4) todo:$.default{$.field[]...}]]      !^hash::sql{запрос}[[$.distinct(1) $.limit(2) $.offset(4) todo:$.default{$.field[]...}]]
         получается hash(ключи=значения первая колонка ответа)          получается hash(ключи=значения первая колонка ответа)
         of hash(ключи=названия остальных колонкок ответа)          of hash(ключи=названия остальных колонкок ответа)
     !^хеш._keys[[название колонки с ключами]]+ таблица из одного столбца $key или как передадут      !^хеш.keys[[название колонки с ключами]]+ таблица из одного столбца key или как передадут
     !^хеш._count[]      !^хеш.count[]
     !^хеш.foreach[key;value]{тело}[[разделитель]|{разделитель который выполняется перед непустым очередным не первым телом}]      !^хеш.foreach[key;value]{тело}[[разделитель]|{разделитель который выполняется перед непустым очередным не первым телом}]
     !^хеш.delete[ключ]  удалить ключ      !^хеш.delete[ключ]  удалить ключ
     !^хеш.contain[ключ] - существует ли в хеше ключ (bool)      !^хеш.contain[ключ] - существует ли в хеше ключ (bool)
     !^хэш._at[first|last]      !^хэш.at[first|last][[key|value|hash]]
     !^хэш._at([-]N)      !^хэш.at([-]N)[[key|value|hash]]
         доступ к заданным элементам упорядоченного хеша          доступ к заданным элементам упорядоченного хеша
       !^хэш.sort[key;value]{{ключеделатель строка}|(ключеделатель число)}[[desc|asc]] default=asc
   
 !hashfile  !hashfile
     !^hashfile::open[filename]      !^hashfile::open[filename]
Line 474  odbc c:\drives\y\parser3project\odbc\deb Line 451  odbc c:\drives\y\parser3project\odbc\deb
   
 !env  !env
     !$env:переменная      !$env:переменная
     !$env:PARSER то же самое, что показывается при запуске parser.cgi      !$env:fields хэш с переменными окружения
       !$env:PARSER_VERSION версия парсера
   
   
 !cookie  !cookie
Line 488  odbc c:\drives\y\parser3project\odbc\deb Line 466  odbc c:\drives\y\parser3project\odbc\deb
   
   
 !request  !request
     !$request:query          !$request:query
     !$request:body unprocessed POST request body  
     !$request:uri      !$request:uri
     !$request:document-root      !$request:document-root
         каталог, относительно которого считаются пути в parser, по-умолчанию = $env:DOCUMENT_ROOT          каталог, относительно которого считаются пути в parser, по-умолчанию = $env:DOCUMENT_ROOT
         можно изменить, если на hosting что-то неудобно настроено          можно изменить, если на hosting что-то неудобно настроено
     !$request:argv = hash с параметрами коммандной строки. ключи 0, 1, ... [0 -- имя обрабатываемого файла].      !$request:argv = hash с параметрами коммандной строки. ключи 0, 1, ... [0 -- имя обрабатываемого файла].
     X!$request:browser  это hash, поля:  
         !$type = ie/nn и !$version = номер, скажем 5.5         
     X$request:user  
     X$request:password  
     !$request:charset      !$request:charset
         Кодировка исходного документа           Кодировка исходного документа 
         !используется при upper/lower и match[][i]          !используется при upper/lower и match[][i]
         ПРЕДУПРЕЖДЕНИЕ: класс form получает свои поля после обработки всех auto класса MAIN          ПРЕДУПРЕЖДЕНИЕ: класс form получает свои поля после обработки всех auto класса MAIN
         поэтому необходимо задать $request/response:charset в одном из них. не после.          поэтому необходимо задать $request/response:charset в одном из них. не после.
       !$request:method метод запроса (GET|POST|PUT)
       !$request:body тело POST-запроса в виде текста
       !$request:body-file тело POST-запроса в виде файла
       !$request:body-charset кодировка POST-запроса
       !$request:headers хэш с заголовками запроса (без префикса HTTP_)
   
   
 !response  !response
Line 537  odbc c:\drives\y\parser3project\odbc\deb Line 515  odbc c:\drives\y\parser3project\odbc\deb
     !^шаблон.size[] количество байт скомпилированного шаблона      !^шаблон.size[] количество байт скомпилированного шаблона
         если значение очень большое -- стоит почитать документацию по pcre и, возможно, переписать шаблон.          если значение очень большое -- стоит почитать документацию по pcre и, возможно, переписать шаблон.
     !^шаблон.study_size[] размер study-структуры. если==0 -- шаблон не может быть "изучен"      !^шаблон.study_size[] размер study-структуры. если==0 -- шаблон не может быть "изучен"
     ^шаблон.save[filespec]  
     ^шаблон.load[filespec]  
   
   
 !reflection  !reflection
Line 548  odbc c:\drives\y\parser3project\odbc\deb Line 524  odbc c:\drives\y\parser3project\odbc\deb
     !^reflection:class_name[объект]        имя класса переданного объекта      !^reflection:class_name[объект]        имя класса переданного объекта
     !^reflection:base[объект]              родительский класс переданного объекта      !^reflection:base[объект]              родительский класс переданного объекта
     !^reflection:base_name[объект]         имя родительского класса переданного объекта      !^reflection:base_name[объект]         имя родительского класса переданного объекта
       !^reflection:class_by_name[имя класса] получение класса по имени
       !^reflection:def[class;имя класса]     проверка класса на существование
     !^reflection:methods[класс]            хеш со списком методов указанного класса, значения -- строки 'native' или 'parser'      !^reflection:methods[класс]            хеш со списком методов указанного класса, значения -- строки 'native' или 'parser'
     !^reflection:method[класс или объект;имя метода] возвращает junction-method класса или объекта      !^reflection:method[класс или объект;имя метода] возвращает junction-method класса или объекта
     !^reflection:fields[класс или объект]  хеш со списком статических полей указанного класса или динамических полей указанного объекта      !^reflection:fields[класс или объект]  хеш со списком статических полей указанного класса или динамических полей указанного объекта
Line 566  odbc c:\drives\y\parser3project\odbc\deb Line 544  odbc c:\drives\y\parser3project\odbc\deb
                                                                    при передаче параметра возвращает true, если передан динамический объект,                                                                     при передаче параметра возвращает true, если передан динамический объект,
                                                                    false если класс                                                                     false если класс
     !^reflection:delete[класс или объект;имя переменной]           удаляет переменную с указанным именем в указанном классе или объекте      !^reflection:delete[класс или объект;имя переменной]           удаляет переменную с указанным именем в указанном классе или объекте
       !^reflection:is[имя элемента;имя класса][[контекст]]           аналог оператора is, позволяющий определить, является ли элемент кодом.
   
   
 !mail  !mail
Line 791  odbc c:\drives\y\parser3project\odbc\deb Line 770  odbc c:\drives\y\parser3project\odbc\deb
     !^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]]{query}  
     !^file::sql{query}[[      !^file::sql{query}[[
         $.name[имя_файла_для_download]          $.name[имя_файла_для_download]
         $.content-type[пользовательский content-type]          $.content-type[пользовательский content-type]
Line 848  odbc c:\drives\y\parser3project\odbc\deb Line 826  odbc c:\drives\y\parser3project\odbc\deb
        вычисляет crc32 строки         вычисляет crc32 строки
     !^math:sha1[string]      !^math:sha1[string]
     !^math:convert[number](base-from;base-to) преобразует строку с числом из одной системы исчисления в другую      !^math:convert[number](base-from;base-to) преобразует строку с числом из одной системы исчисления в другую
       !^math:digest[[md5|sha1|sha256|sha512];строка или файл][[ $.format[hex|base64] $.hmac[ключ] ]]
          объединяет в себе возможность работы с разными алгоритмами криптографического хеширования.
          $.hmac[ключ] для проверки целостности переданных данных
   
   
 !inet  !inet
     !^inet:ntoa(long)      !^inet:ntoa(long)
     !^inet:aton[IP]      !^inet:aton[IP]
       !^inet:name2ip[name][[ $.ipv[4|6|any] $.table(true) ]] прямое преобразование имени в IP адрес
       !^inet:ip2name[ip][ $.ipv[4|6|any] ]] обратное преобразование из IP адреса в имя
   
   
 !json  !json
     !^json:parse[-json-строка-[;      !^json:parse[-json-строка-[;
         $.depth(максимальная глубина, default == 19)          $.depth(максимальная глубина, default == 19)
         $.double(false)              отключить встроенный парсинг чисел с плавающей точкой (по умолчанию включен)          $.double(false)              отключить встроенный парсинг чисел с плавающей точкой (по умолчанию включен)
                                      в этом случае они попадут в результирующий объект как строки                                       в этом случае они попадут в результирующий объект как строки
           $.int(false)                 отключить встроенный парсинг целых чисел (по умолчанию включен)
                                        в этом случае они попадут в результирующий объект как строки
         $.distinct[first|last|all]   как будет происходить разбор дублирующихся ключей у объектов          $.distinct[first|last|all]   как будет происходить разбор дублирующихся ключей у объектов
                                      first -- будет оставлен первый встретившийся элемент                                       first -- будет оставлен первый встретившийся элемент
                                      last  -- будет оставлен последний встретившийся элемент                                       last  -- будет оставлен последний встретившийся элемент
Line 874  odbc c:\drives\y\parser3project\odbc\deb Line 860  odbc c:\drives\y\parser3project\odbc\deb
         $.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
         $.indent(true)           форматировать результирующую строку табуляциями по глубине вложенности          $.indent(true)           форматировать результирующую строку табуляциями по глубине вложенности
         $.date[sql-string|gmt-string|unix-timestamp]    формат вывода даты, по умолчанию -- sql-string          $.date[sql-string|gmt-string|iso-string|unix-timestamp]    формат вывода даты, по умолчанию -- sql-string
         $.table[object|array|compact]    формат вывода таблицы, по умолчанию -- object          $.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",...],...]
Line 885  odbc c:\drives\y\parser3project\odbc\deb Line 871  odbc c:\drives\y\parser3project\odbc\deb
         $.тип[method-junction]   любой тип можно вывести с помощью пользовательского метода, который           $.тип[method-junction]   любой тип можно вывести с помощью пользовательского метода, который 
                                  должен принимать 3 параметра: ключ, объект данного типа и опции                                    должен принимать 3 параметра: ключ, объект данного типа и опции 
                                  вызова ^json:string[]                                   вызова ^json:string[]
           $._default[имя метода]   имя пользователького метода, при его наличии он будет вызван для
                                    сериализации
           $.void[null|string]      неопределенное значение будет выдано в виде null (по умолчанию)
                                    или пустой строки
     ]]      ]]
         сериализует системный или пользовательский объект в json-строку          сериализует системный или пользовательский объект в json-строку
   
Line 892  odbc c:\drives\y\parser3project\odbc\deb Line 882  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::today[] дата на 00:00:00 текущего дня      !^date::today[] дата на 00:00:00 текущего дня
     !^date::create(дней с epoch) // старое имя set      !^date::create(дней с epoch)
     !^date::create(year;month[;day[;hour[;minute[;second]]]]) // старое имя set      !^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 912  odbc c:\drives\y\parser3project\odbc\deb Line 903  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
       !^date:roll[TZ;Новая зона] говорит, что по умолчанию все даты в таком-то часовом поясе
     !^дата.sql-string[[datetime|date|time]]      !^дата.sql-string[[datetime|date|time]]
         datetime или без параметра -- %Y-%m-%d %H:%M:%S          datetime или без параметра -- %Y-%m-%d %H:%M:%S
         date                       -- %Y-%m-%d          date                       -- %Y-%m-%d
Line 924  odbc c:\drives\y\parser3project\odbc\deb Line 916  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-23T12:32:23+3
   
   
 xdoc(xnode)  xdoc(xnode)
Line 1237  DATA::=string | file | hash Line 1230  DATA::=string | file | hash
         !по-умолчанию, получение http status != 200 >> создает http.status ошибку,          !по-умолчанию, получение http status != 200 >> создает http.status ошибку,
         !это можно отключить, передав          !это можно отключить, передав
         !$.any-status(1)          !$.any-status(1)
         !$.charset[кодировка удалённых докуметов по-умолчанию] << если сервер вернёт content-type:charset=ОНА_ПЕРЕБИВАЕТ          !$.charset[кодировка удалённых документов по-умолчанию], если сервер вернёт content-type:charset - ОНА_ПЕРЕБИВАЕТ
           !$.response-charset[кодировка удалённых документов], не перебиваеся content-type:charset
         !$.user[пользователь]          !$.user[пользователь]
         !$.password[пароль]          !$.password[пароль]
     !file::load в дополнительные поля записывает      !file::load в дополнительные поля записывает
Line 1276  DATA::=string | file | hash Line 1270  DATA::=string | file | hash
     !http.status          ^file::load[http://ok/there]                host found, connection accepted, status!=200      !http.status          ^file::load[http://ok/there]                host found, connection accepted, status!=200
     !date.range           ^date::create(1950;1;1)                     date out of valid range      !date.range           ^date::create(1950;1;1)                     date out of valid range
   
 !нужно выключить русский apache: CharsetDisable on  
   
 Xесли в MAIN будет определён флаг $ORIGINS(1) то вместо обычного вывода страницы будет  
     выдан список фрагментов результата с указанием их происхождения  
   
 !если в MAIN определён $SIGPIPE(1) то в случае, если обработка была прервана пользователем, сообщение  !если в MAIN определён $SIGPIPE(1) то в случае, если обработка была прервана пользователем, сообщение
         об этом будет записано в parser3.log (раньше оно всегда писалось)          об этом будет записано в parser3.log (раньше оно всегда писалось)
   

Removed from v.1.243  
changed lines
  Added in v.1.248


E-mail: