Diff for /parser3/operators.ru.txt between versions 1.5 and 1.21

version 1.5, 2002/02/06 08:40:20 version 1.21, 2002/03/22 11:25:05
Line 9  Xне сделано, видимо, не будет сделано Line 9  Xне сделано, видимо, не будет сделано
             # побитный xor              # побитный xor
             ## логический xor              ## логический xor
             ~ побитное отрицание              ~ побитное отрицание
             \ целочисленное деление 10/3=3              \ целочисленное деление 10\3=3
         !def для проверки defined,          !def для проверки defined,
             пустая строка не defined              пустая строка не defined
             пустая таблица не defined              пустая таблица не defined
Line 49  Xне сделано, видимо, не будет сделано Line 49  Xне сделано, видимо, не будет сделано
     !^switch[значение]{^case[вариант1[;вариант2...]]{действие}^case[DEFAULT]{действие по умолчанию}}      !^switch[значение]{^case[вариант1[;вариант2...]]{действие}^case[DEFAULT]{действие по умолчанию}}
     !^while(условие){тело}      !^while(условие){тело}
     !^for[i](0;4){тело}[[разделитель]|{разделитель который выполняется перед непустым очередным не первым телом}]      !^for[i](0;4){тело}[[разделитель]|{разделитель который выполняется перед непустым очередным не первым телом}]
     X^exit[] + - прекращяет обработку запроса.       !^use[модуль]
       !^try{
           ...
           !^throw[sql.connect;вася;болван] // был ^error[текст]
           ...
       }{
           ^if($exception.type eq sql){
               $exception.handled(1)  ^rem{флаг, что exception обработан}
               ....
           }
           
           ^switch($exception.type){
               ^case[sql;mail]{
                   $exception.handled(1)
                   код, обрабатывающий sql ошибку
                   $exception.type = sql.connect
                   $exception.file $exception.lineno [если не запрещены при компиляции]
                   $exception.source = вася
                   $exception.comment = болван
                   ^if($exception.type eq connect){^cache[read]}
               }
               ^case[_default]{
                   код, обрабатывающий другую ошибку
                   ^throw[$exception] << re-throw
               }
           }
       }
       ^exit[] + - прекращяет обработку запроса. 
         удобно сделать после выставления 401 ошибки          удобно сделать после выставления 401 ошибки
     X^return[результат] + - отваливает из выполнения метода,       ^return[результат] + - отваливает из выполнения метода, 
         выдавая нестандартный результат          выдавая нестандартный результат
     X^break[] + - обрывает цикл      ^break[] + - обрывает цикл
     X^continue[] + - обрывает итерацию цикла      ^continue[] + - обрывает итерацию цикла
     !^use[модуль]  
     !^untaint[[as-is|file-spec|http-header|mail-header|uri|table|sql|js|xml|html|optimized-html]]{код}      !^untaint[[as-is|file-spec|http-header|mail-header|uri|table|sql|js|xml|html|optimized-html]]{код}
         default as-is          default as-is
     !^taint[[lang]][код]      !^taint[[lang]][код]
Line 113  odbc    c:\drives\y\parser3project\odbc\ Line 139  odbc    c:\drives\y\parser3project\odbc\
         ставить такой префикс перед открывающим апострофом, впритык, везде без проблелов          ставить такой префикс перед открывающим апострофом, впритык, везде без проблелов
         /**имя_поля**/'literal'          /**имя_поля**/'literal'
     !^rem{}      !^rem{}
     !^error[текст]  
     !^cache[файл](секунд){код}      !^cache[файл](секунд){код}
         !скэшировать строку, которая получается при выполнении кода на 'секунд' секунд          !скэшировать строку, которая получается при выполнении кода на 'секунд' секунд
         !если 0секунд, значит не кэшировать, а старый такой стереть          !если 0секунд, значит не кэшировать, а старый такой стереть
       ^cache[delete] 
           сигнализирует вышестоящему ^cache "не кэшировать, старое забыть"
       ^cache[read] 
           сигнализирует вышестоящему ^cache "взять скэшированное насильно, игнорируя expires", <br>
           выдаёт bool "получилось/нет"
   
   
     Xесть глобальный флажок в свойствах/командной строке "не оптимизировать"      Xесть глобальный флажок в свойствах/командной строке "не оптимизировать"
     !и есть исключение: ^untaint[html]{код} не оптимизируется безотностительно флажка      !и есть исключение: ^untaint[html]{код} не оптимизируется безотностительно флажка
Line 210  odbc    c:\drives\y\parser3project\odbc\ Line 241  odbc    c:\drives\y\parser3project\odbc\
         если ломается преобразование, берётся default          если ломается преобразование, берётся default
     !^имя.double[]+ .double(default)  double значение строки      !^имя.double[]+ .double(default)  double значение строки
         если ломается преобразование, берётся default          если ломается преобразование, берётся default
     !^имя.format{формат} %d  %.2f %02d...      !^имя.format[формат] %d  %.2f %02d...
     !^строка.match[шаблон][[опции поиска]]  $prematch $match $postmatch $1 $2...      !^строка.match[шаблон][[опции поиска]]  $prematch $match $postmatch $1 $2...
         опции поиска=          опции поиска=
                 i CASELESS          i CASELESS
                 x whitespace in regex ignored          x whitespace in regex ignored
                 s singleline = $ считается концом всего текста          s singleline = $ считается концом всего текста
                 m multiline = $ считается концом строки[\n], не концом всего текста          m multiline = $ считается концом строки[\n], не концом всего текста
                 g найти все вхождения, а не одно          g найти все вхождения, а не одно
     !^строка.match[шаблон][опции поиска]{замена}      !^строка.match[шаблон][опции поиска]{замена}
         опции поиска+=          опции поиска+=
                 g заменить все вхождения, а не одно          g заменить все вхождения, а не одно
     !^строка.{l|r}split[разделитель] таблица из столбца $piece      !^строка.{l|r}split[разделитель] таблица из столбца $piece
     !^строка.upper|lower[]       !^строка.upper|lower[] 
     X^строка.truncate(предел терпенья) стиль :(      X^строка.truncate(предел терпенья) стиль :(
Line 238  odbc    c:\drives\y\parser3project\odbc\ Line 269  odbc    c:\drives\y\parser3project\odbc\
     в выражении       в выражении 
         логическое значение равно "не пуста?"          логическое значение равно "не пуста?"
         числовое значение равно count[]          числовое значение равно count[]
     !^table::set[[nameless]]{данные}      !^table::create[[nameless]]{данные} старое имя "set"
       !^table::create[table]
           клонирует таблицу
     !^table::load[[nameless;]путь]      !^table::load[[nameless;]путь]
         !если не nameless, названия колонок берутся из первой строки          !если не nameless, названия колонок берутся из первой строки
         !пустые строки, и строки в первой колонке содержащие '#', игнорируются                  !пустые строки, и строки в первой колонке содержащие '#', игнорируются        
Line 262  odbc    c:\drives\y\parser3project\odbc\ Line 295  odbc    c:\drives\y\parser3project\odbc\
     !^таблица.join[таблица] - добавляет записи из таблицы.       !^таблица.join[таблица] - добавляет записи из таблицы. 
         таблицы должны иметь одинаковую структуру.          таблицы должны иметь одинаковую структуру.
     !^таблица.flip[] выдаёт транспонированную, надо куда-то сложить, потом пользовать      !^таблица.flip[] выдаёт транспонированную, надо куда-то сложить, потом пользовать
     !^таблица.locate[поле;значение] выдаёт bool      !^таблица.locate[поле;значение] передвигает текущую строку, если найдёт. выдаёт bool
       !^таблица.locate(логическое выражение) передвигает текущую строку, если найдёт. выдаёт bool
     !^таблица.hash[поле, что будет ключом][[поле значений|table поля значений]]+      !^таблица.hash[поле, что будет ключом][[поле значений|table поля значений]]+
         значением $hash.ключ будет hash в котором поля значений будут ключами          значением $hash.ключ будет hash в котором поля значений будут ключами
         поля значений могут быть не указаны, тогда ими будут все столбцы, включая ключевой          поля значений могут быть не указаны, тогда ими будут все столбцы, включая ключевой
Line 275  odbc    c:\drives\y\parser3project\odbc\ Line 309  odbc    c:\drives\y\parser3project\odbc\
     !$hash.ключ      !$hash.ключ
         !_default - специальный ключ, если задан,           !_default - специальный ключ, если задан, 
         то при обращении по ключу, которому нет соответствия, выдаётся _default значение           то при обращении по ключу, которому нет соответствия, выдаётся _default значение 
     !^hash::create[[!copy_from_hash|!copy_from_hashfile]]      !^hash::create[[!copy_from_hash|Xcopy_from_hashfile]]
         создаёт новый hash, копию старого          создаёт новый hash, копию старого
     !^hash.add[слагаемое]      !^hash.add[слагаемое]
         перезаписывает одноимённые          перезаписывает одноимённые
     !^hash.sub[вычитаемое]      !^hash.sub[вычитаемое]
     !^a.union[b] = объединение      !^a.union[b] = объединение
           одноимённые остаются
     !^a.intersection[b] = пересечение      !^a.intersection[b] = пересечение
           значения a
     !^a.intersects[b] = bool      !^a.intersects[b] = bool
     !^hash::sql{запрос}[[$.limit(2) $.offset(4)]]      !^hash::sql{запрос}[[$.limit(2) $.offset(4)]]
         получается hash(ключи=значения первая колонка ответа)          получается hash(ключи=значения первая колонка ответа)
Line 303  odbc    c:\drives\y\parser3project\odbc\ Line 339  odbc    c:\drives\y\parser3project\odbc\
 !cookie  !cookie
     !$cookie:имя считать старое или свежезаданное      !$cookie:имя считать старое или свежезаданное
     !$cookie:имя[значение] на 90 дней      !$cookie:имя[значение] на 90 дней
     !$cookie:имя[$.value[значение]  $.expires(дней) или $.expires[session]]      !$cookie:имя[$.value[значение]  $.expires(дней, 0дней=session)]
   
 !request  !request
     !$request:query          !$request:query    
Line 324  odbc    c:\drives\y\parser3project\odbc\ Line 360  odbc    c:\drives\y\parser3project\odbc\
         ! $value[abc] field: {abc}<<часть          ! $value[abc] field: {abc}<<часть
         ! $attribute[zzz] field: abc; {attribute=zzz}<<часть          ! $attribute[zzz] field: abc; {attribute=zzz}<<часть
     !$response:body[DATA]  замещает стандартный ответ      !$response:body[DATA]  замещает стандартный ответ
       !$response:status
     !^response:clear[] забыть все заданные response поля      !^response:clear[] забыть все заданные response поля
     !$response:charset      !$response:charset
         кодировка клиента т.е. та,           кодировка клиента т.е. та, 
Line 334  odbc    c:\drives\y\parser3project\odbc\ Line 371  odbc    c:\drives\y\parser3project\odbc\
         ПРЕДУПРЕЖДЕНИЕ: класс form получает свои поля после обработки всех auto класса MAIN          ПРЕДУПРЕЖДЕНИЕ: класс form получает свои поля после обработки всех auto класса MAIN
         поэтому необходимо задать $request/response:charset в одном из них. не после.          поэтому необходимо задать $request/response:charset в одном из них. не после.
   
 !hashfile  Xhashfile
     !^hashfile::open[$DB_HOME;filename]      !^hashfile::open[$DB_HOME;filename]
     !^hashfile.clear[]      !^hashfile.clear[]
         забыть всё          забыть всё
Line 412  odbc    c:\drives\y\parser3project\odbc\ Line 449  odbc    c:\drives\y\parser3project\odbc\
                ]                 ]
             ]              ]
         ]          ]
     !для отправки используется программа с параметрами, задаваемая       !для отправки 
         $MAIL.sendmail[команда]      под unix используется программа с параметрами, задаваемая 
         если не будет задана, проверяется, доступна ли           $MAIL.sendmail[команда]
         /usr/sbin/sendmail или          если не будет задана, проверяется, доступна ли 
           /usr/sbin/sendmail или
         /usr/lib/sendmail          /usr/lib/sendmail
         и, если доступна, то запускается с параметром "-t".               и, если доступна, то запускается с параметром "-t".    
       под win32 используется SMTP протокол, сервер задаётся 
           $MAIL.SMTP[smtp.domain.ru]
   
 !image  !image
     !$картинка[^image::measure[DATA]]      !$картинка[^image::measure[DATA]]
Line 480  odbc    c:\drives\y\parser3project\odbc\ Line 520  odbc    c:\drives\y\parser3project\odbc\
         каталоги для dest создаются с правами 775          каталоги для dest создаются с правами 775
         каталог старого файла стирается, если после move он остаётся пуст          каталог старого файла стирается, если после move он остаётся пуст
     !^file:lock[имя файла]{код}      !^file:lock[имя файла]{код}
         файл при необходимости создаётся          файл при необходимости создаётся
         блокируется          блокируется
         выполняется код          выполняется код
         разблокируется          разблокируется
   
 !math  !math
     !$math:PI      !$math:PI
Line 498  odbc    c:\drives\y\parser3project\odbc\ Line 538  odbc    c:\drives\y\parser3project\odbc\
   
 !date  !date
     !время типа time можно использовать в выражениях, подставляет       !время типа time можно использовать в выражениях, подставляет 
         количество дней с epoch [1 января 1970 (UTC)], дробное          количество дней с epoch [1 января 1970 (UTC)], дробное
     !всё происходит в localtime,       !всё происходит в localtime, 
     !временная зона задаётся вне parser средствами OS      !временная зона задаётся вне parser средствами OS
     !^date::now[]      !^date::now[]
     !^date::set(дней с epoch)      !^date::create(дней с epoch) // старое имя set
     !^date::set(year;month;day[;hour[;minute[;second]]])      !^date::create(year;month;day[;hour[;minute[;second]]]) // старое имя set
     !$date.year month day  hour minute second  weekday read-only          !$date.year month day  hour minute second  weekday read-only    
     !^date.roll[year|month|day](+/- 1) сдвигает дату      !^date.roll[year|month|day](+/- 1) сдвигает дату
     !^date.sql-string[] %Y-%m-%d %H:%M:%S      !^date.sql-string[] %Y-%m-%d %H:%M:%S
         where published='$дата.sql-string[]'          where published='$дата.sql-string[]'
     !^date:calendar[rus|eng;год;месяц] выдаёт таблицу      !^date:calendar[rus|eng;год;месяц] выдаёт неименованную таблицу 
     !^date:calendar[rus|eng;год;месяц;день] выдаёт таблицу          столбцы: 0..6 
       !^date:calendar[rus|eng;год;месяц;день] выдаёт именнованную таблицу
           столбцы: year, month, day, weekday
           
 xdoc(xnode)  xdoc(xnode)
     DOM1 attributes:      DOM1 attributes:
Line 534  xdoc(xnode) Line 576  xdoc(xnode)
         Attributes with the name "ID" are not of type ID unless so defined.           Attributes with the name "ID" are not of type ID unless so defined. 
         Implementations that do not know whether attributes are of type ID or not           Implementations that do not know whether attributes are of type ID or not 
         are expected to return null.          are expected to return null.
     !^.getElementsByTagNameNS[namespaceURI;localName] = array of nodes  
   
     !кодировка строк и умолчание для $.encoding       !кодировка строк и умолчание для $.encoding 
     !равно текущей кодировке выходной страницы,      !равно текущей кодировке выходной страницы,
         $response:charset          $response:charset
     ::sql{...}      ::sql{...}
     !::set{<string/>}      !::create{<string/>} старое имя 'set'
     !::create[qualifiedName]      !::create[qualifiedName]
     !::load[file.xml]      !::load[file.xml]
     !.transform[rules.xsl][[params hash]] выдаёт dom      !.transform[rules.xsl][[params hash]] выдаёт dom
Line 564  xdoc(xnode) Line 605  xdoc(xnode)
     !.save[file.xml;output options] с шапкой      !.save[file.xml;output options] с шапкой
     !.file[output options] = file      !.file[output options] = file
         output options идентичны атрибутам xsl:output           output options идентичны атрибутам xsl:output 
                 [исключение: игнорируется cdata-section-elements, нужно будет, сделаю]              [исключение: игнорируется cdata-section-elements, нужно будет, сделаю]
         выдаёт media-type при подстановке $response:body[сюда]          выдаёт media-type при подстановке $response:body[сюда]
   
   
Line 636  xdoc(xnode) Line 677  xdoc(xnode)
   
     !Introduced in DOM Level 2:      !Introduced in DOM Level 2:
     !Node importNode(in Node importedNode, in boolean deep) raises(DOMException)      !Node importNode(in Node importedNode, in boolean deep) raises(DOMException)
       !NodeList getElementsByTagNameNS(in DOMString namespaceURI, in DOMString localName);
   
     !XPath:      !XPath:
     !^node.select[xpath/query/expression] = array of nodes,       !^node.select[xpath/query/expression] = array of nodes, 
         empty array if nothing found          empty array if nothing found
     !^node.selectSingle[xpath/query/expression] = first node if any      !^node.selectSingle[xpath/query/expression] = first node if any
     !^node.selectBool[xpath/query/expression] = bool if any      !^node.selectBool[xpath/query/expression] = bool if any
     !^node.selectNumber[xpath/query/expression] = double if any      !^node.selectNumber[xpath/query/expression] = double if any
Line 712  xdoc(xnode) Line 753  xdoc(xnode)
             file              file
   
     !$status:rusage hash      !$status:rusage hash
         !utime user time used          !utime user time used
         !stime system time used          !stime system time used
         !maxrss max resident set size          !maxrss max resident set size
         !ixrss integral shared text memory size          !ixrss integral shared text memory size
         !idrss integral unshared data size          !idrss integral unshared data size
         !isrss integral unshared stack size          !isrss integral unshared stack size
   
 !MAIN  !MAIN
     это класс, загружаемый на автомате из parser3.conf,       это класс, загружаемый на автомате из parser3.conf, 
     кучи auto.p и запрашиваемого документа:      кучи auto.p и запрашиваемого документа:
         !parser3.conf           !parser3.conf 
             cgi:               cgi: 
                 1) configure sysconfdir|windows directory                   1.0) полный путь из переменной окружения PARSER_ROOT_CONFIG
                   1.1) configure sysconfdir|windows directory 
                 2)рядом с бинарником parser'а                   2)рядом с бинарником parser'а 
             isapi: windows directory              isapi: windows directory
             apache module:               apache module: 
Line 738  xdoc(xnode) Line 780  xdoc(xnode)
     !результат которого передаётся в его @post-process[data] if($data is string) ...      !результат которого передаётся в его @post-process[data] if($data is string) ...
     !результат которого отдаётся пользователю      !результат которого отдаётся пользователю
   
     !если встречается ошибка, её можно красиво сообщить пользователю,       !если встречается ошибка и try не задан, её можно красиво сообщить пользователю, 
     !определив      !определив
     !@exception[origin;source;comment;type;code;stack]      !@unhandled_exception[exception;stack]
     !origin файл(строка) где случилась проблема      !$exception.type  строка "тип проблемы"
     !source строка, из-за которой случилась проблема      !$exception.file $exception.lineno файл и строка где случилась проблема [если не запрещены при компиляции]
     !comment комментарий english      !$exception.source строка, из-за которой случилась проблема
     !type строка "тип проблемы" (пока пусто)      !$exception.comment комментарий english
     !code строка "код проблемы" (пока пусто)      !stack табличка из колонок file line name,
     !stack табличка из колонок origin name,          там лежат в обратном порядке имена[name] и места вызовов[file line] 
         там лежат в обратном порядке имена[name] и места вызовов[origin]   
         операторов/методов, приведших к ошибке.          операторов/методов, приведших к ошибке.
   
     !нужно выключить русский apache: CharsetDisable on      !нужно выключить русский apache: CharsetDisable on

Removed from v.1.5  
changed lines
  Added in v.1.21


E-mail: