Diff for /parser3/operators.ru.txt between versions 1.195 and 1.211

version 1.195, 2007/05/18 12:46:05 version 1.211, 2008/07/18 08:25:13
Line 62  Xне сделано, видимо, не будет сделано Line 62  Xне сделано, видимо, не будет сделано
     !^use[модуль]      !^use[модуль]
     !^try{      !^try{
         ...          ...
         !^throw[sql.connect;вася;болван] // был ^error[текст]          !^throw[sql.connect[;вася[;болван]]] // был ^error[текст]
           !^throw[
                   $.type[sql.connect]
                   $.source[вася]
                   $.comment[болван]
           ]
         ...          ...
     }{      }{
         ^if($exception.type eq sql){          ^if($exception.type eq "sql"){
             $exception.handled(1)  ^rem{флаг, что exception обработан}              $exception.handled(1|true)  ^rem{флаг, что exception обработан}
             ....              ....
         }          }
                   
         ^switch($exception.type){          ^switch[$exception.type]{
             ^case[sql;mail]{              ^case[sql;mail]{
                 $exception.handled(1)                  $exception.handled(1)
                 код, обрабатывающий sql ошибку                  код, обрабатывающий sql ошибку
Line 81  Xне сделано, видимо, не будет сделано Line 86  Xне сделано, видимо, не будет сделано
             }              }
             ^case[DEFAULT]{              ^case[DEFAULT]{
                 код, обрабатывающий другую ошибку                  код, обрабатывающий другую ошибку
                 ^throw[$exception] << re-throw                  ^throw[$exception] << re-throw // DON'T! It's default behaviour!
             }              }
         }          }
     }      }
Line 107  Xне сделано, видимо, не будет сделано Line 112  Xне сделано, видимо, не будет сделано
             ClientCharset=parser-charset << charset in which parser thinks client works              ClientCharset=parser-charset << charset in which parser thinks client works
             charset=cp1251_koi8&              charset=cp1251_koi8&
             timeout=3&              timeout=3&
             compress=1&              compress=0&
             named_pipe=1&              named_pipe=1&
               multi_statements=1& allow execute more then one query in one parser :sql{} request
             autocommit=1              autocommit=1
             autocommit если выставить в 0, будет делать commit/rollback              autocommit если выставить в 0, будет делать commit/rollback
   
Line 133  Xне сделано, видимо, не будет сделано Line 139  Xне сделано, видимо, не будет сделано
         !odbc://DSN=dsn^;UID=user^;PWD=password^;ClientCharset=parser-charset          !odbc://DSN=dsn^;UID=user^;PWD=password^;ClientCharset=parser-charset
             ClientCharset << charset in which parser thinks client works              ClientCharset << charset in which parser thinks client works
                           
         !sqlite://database          !sqlite://DBfile?
                   ClientCharset=parser-charset& << charset in which parser thinks client works
                   autocommit=1
   
         для работы connect нужно, чтобы заранее(рекомендуется в системном конфигурационном auto.p)          для работы connect нужно, чтобы заранее(рекомендуется в системном конфигурационном auto.p)
         была определена таблица          была определена таблица
 #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 /usr/local/lib/mysql/libmysqlclient.so
 pgsql    /www/parser3/libparser3pgsql.so    /usr/local/pgsql/lib/libpq.so  pgsql   /www/parser3/libparser3pgsql.so /usr/local/pgsql/lib/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        /usr/local/sqlite/lib/sqlite3.so
 odbc    c:\drives\y\parser3project\odbc\debug\parser3odbc.dll  odbc    c:\drives\y\parser3project\odbc\debug\parser3odbc.dll
 }]  }]
 ]  ]
         !в таблице у oracle в столбце клиентской библиотеки          !в таблице у oracle в столбце клиентской библиотеки
Line 308  odbc    c:\drives\y\parser3project\odbc\ Line 316  odbc    c:\drives\y\parser3project\odbc\
     !^строка.match[шаблон][опции поиска]{замена}      !^строка.match[шаблон][опции поиска]{замена}
         опции поиска+=          опции поиска+=
         g заменить все вхождения, а не одно          g заменить все вхождения, а не одно
     !^строка.split[разделитель][[lrhv]]      !^строка.split[разделитель][[lrhv]][[название столбца для вертикального разбиения]]
         l слева направо [default]          l слева направо [default]
         r справа налево          r справа налево
         h nameless таблица с ключами 0, 1, 2, ...          h nameless таблица с ключами 0, 1, 2, ...
         v таблица из столбца piece [default]          v таблица из 1 столбца 'piece' или как передадут [default]
     !^строка.{l|r}split[разделитель] таблица из столбца $piece      !^строка.{l|r}split[разделитель] таблица из столбца $piece
         оставлен для совместимости          оставлен для совместимости
     !^строка.upper|lower[]       !^строка.upper|lower[] 
Line 323  odbc    c:\drives\y\parser3project\odbc\ Line 331  odbc    c:\drives\y\parser3project\odbc\
     !^строка.left(N)      !^строка.left(N)
     !^строка.right(N)      !^строка.right(N)
     !^строка.pos[подстрока]      !^строка.pos[подстрока]
       !^строка.pos[подстрока](позиция, с которой ищем)
         <0 = не найдено          <0 = не найдено
     !^строка.replace[$таблица_подстановок_строка_на_строку]      !^строка.replace[$таблица_подстановок_строка_на_строку]
     !^строка.save[[append;]путь]      !^строка.save[[append;]путь]
Line 339  odbc    c:\drives\y\parser3project\odbc\ Line 348  odbc    c:\drives\y\parser3project\odbc\
     в выражении       в выражении 
         логическое значение равно "не пуста?"          логическое значение равно "не пуста?"
         числовое значение равно count[]          числовое значение равно count[]
     !^table::create[[nameless]]{данные} старое имя "set"      !^table::create[[nameless]]{данные}[[$.separator[^#09]]] старое имя "set"
     !^table::create[table][[$.limit(1) $.offset(5) $.offset[cur] $.reverse(1)]]      !^table::create[table][[$.limit(1) $.offset(5) $.offset[cur] $.reverse(1)]]
         клонирует таблицу              клонирует таблицу    
         reverse << сзаду на перёд (работает пока только в locate, в table::create НЕ работает)          reverse << сзаду на перёд (работает пока только в locate, в table::create НЕ работает)
Line 382  odbc    c:\drives\y\parser3project\odbc\ Line 391  odbc    c:\drives\y\parser3project\odbc\
         поля значений могут быть не указаны, тогда ими будут все столбцы, включая ключевой          поля значений могут быть не указаны, тогда ими будут все столбцы, включая ключевой
         если distinct содержит true, то не будет ошибки при повторяющихся ключах          если distinct содержит true, то не будет ошибки при повторяющихся ключах
         если distinct содержит tables, то будет создан hash из таблиц, содержащих строки с ключом          если distinct содержит tables, то будет создан hash из таблиц, содержащих строки с ключом
     !^таблица.columns[]+ таблица из одного столбца $column      !^таблица.columns[[название столбца]]+ таблица из одного столбца 'column' или как передадут
     !$отобранное[^таблица.select(выражение)] = таблица из тех же столбцов и строк, у которых условие совпало      !$отобранное[^таблица.select(выражение)] = таблица из тех же столбцов и строк, у которых условие совпало
         $adults[^man.select($man.age>=18)]          $adults[^man.select($man.age>=18)]
     ^таблица.color[цвет1;цвет2]      ^таблица.color[цвет1;цвет2]
Line 463  odbc    c:\drives\y\parser3project\odbc\ Line 472  odbc    c:\drives\y\parser3project\odbc\
     !значение поля expires может быть 'session', date, или число дней(0дней=session)      !значение поля expires может быть 'session', date, или число дней(0дней=session)
     ! если дата, она будет преобразована к формату "Sun, 25-Aug-2002 12:03:45 GMT"      ! если дата, она будет преобразована к формату "Sun, 25-Aug-2002 12:03:45 GMT"
     ! можно устанавливать bool свойства, например $.secure(true), $.httponly(true)      ! можно устанавливать bool свойства, например $.secure(true), $.httponly(true)
       !$cookie:fields = hash со всеми cookies
   
   
 !request  !request
Line 472  odbc    c:\drives\y\parser3project\odbc\ Line 482  odbc    c:\drives\y\parser3project\odbc\
     !$request:document-root      !$request:document-root
         каталог, относительно которого считаются пути в parser, по-умолчанию = $env:DOCUMENT_ROOT          каталог, относительно которого считаются пути в parser, по-умолчанию = $env:DOCUMENT_ROOT
         можно изменить, если на hosting что-то неудобно настроено          можно изменить, если на hosting что-то неудобно настроено
       !$request:argv = hash с параметрами коммандной строки. ключи 0, 1, ... [0 -- имя обрабатываемого файла].
     X!$request:browser  это hash, поля:      X!$request:browser  это hash, поля:
         !$type = ie/nn и !$version = номер, скажем 5.5                 !$type = ie/nn и !$version = номер, скажем 5.5       
     X$request:user      X$request:user
Line 690  odbc    c:\drives\y\parser3project\odbc\ Line 701  odbc    c:\drives\y\parser3project\odbc\
     !$файл_который_был_loaded.size      !$файл_который_был_loaded.size
     !^file::stat[имя файла]      !^file::stat[имя файла]
     !$файл_который_был_stated.size !.adate !.mdate !.cdate      !$файл_который_был_stated.size !.adate !.mdate !.cdate
     !^file::cgi[имя файла[;env hash +options[;1cmd[;2line[;3ar[;4g[;5s]]]]]]]      !^file::cgi[[text|binary;]имя файла[;env hash +options[;1cmd[;2line[;3ar[;4g[;5s]]]]]]]
         возвращённый заголовок рассыпается на $поля          возвращённый заголовок рассыпается на $поля
         $status          $status
         $stderr          $stderr
     !^file::exec[имя файла[;env hash[;1cmd[;2line[;3ar[;4g[;5s;...under win32 max 10 args]]]]]]]      !^file::exec[[text|binary;]имя файла[;env hash[;1cmd[;2line[;3ar[;4g[;5s;...under win32 max 10 args]]]]]]]
         options:          options:
             $.stdin[текст]  если текст пуст, отключается автоматическое пересовывание данных HTTP-POST               $.stdin[текст]  если текст пуст, отключается автоматическое пересовывание данных HTTP-POST 
     !^file:move[старое имя файла;новое имя файла]       !^file:move[старое имя файла;новое имя файла] 
Line 767  odbc    c:\drives\y\parser3project\odbc\ Line 778  odbc    c:\drives\y\parser3project\odbc\
        другие salt читайте документацию по функции OS 'crypt'.         другие salt читайте документацию по функции OS 'crypt'.
     !^math:crc32[string]      !^math:crc32[string]
        вычисляет crc32 строки         вычисляет crc32 строки
       !^math:sha1[string]
   
   !inet
       !^inet:ntoa(long)
       !^inet:aton[IP]
   
 !date  !date
     !время типа time можно использовать в выражениях, подставляет       !время типа time можно использовать в выражениях, подставляет 
Line 791  odbc    c:\drives\y\parser3project\odbc\ Line 807  odbc    c:\drives\y\parser3project\odbc\
     !^дата.roll[year|month|day](+-смещение) сдвигает дату      !^дата.roll[year|month|day](+-смещение) сдвигает дату
     !^дата.roll[TZ;Новая зона] говорит, что дата в таком-то часовом поясе: влияет на .hour & Co      !^дата.roll[TZ;Новая зона] говорит, что дата в таком-то часовом поясе: влияет на .hour & Co
     !^дата.sql-string[] %Y-%m-%d %H:%M:%S      !^дата.sql-string[] %Y-%m-%d %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
     !^date:calendar[rus|eng;год;месяц;день] выдаёт именнованную таблицу      !^date:calendar[rus|eng](год;месяц;день) выдаёт именнованную таблицу
         столбцы: year, month, day, weekday          столбцы: year, month, day, weekday
           !^date:last-day(год;месяц) вернёт последний день месяца
       !^дата.last-day[] вернёт последний день месяца $дата
       !^дата.gmt-string[]  Fri, 23 Mar 2001 09:32:23 GMT
   
   
 xdoc(xnode)  xdoc(xnode)
     !$xdoc.search-namespaces hash, where keys=prefixes, values=urls      !$xdoc.search-namespaces hash, where keys=prefixes, values=urls
           
Line 829  xdoc(xnode) Line 849  xdoc(xnode)
     ::sql{...}      ::sql{...}
     !::create[[URI]]{<?xml?><string/>} старое имя 'set'      !::create[[URI]]{<?xml?><string/>} старое имя 'set'
     !::create[[URI]][qualifiedName]      !::create[[URI]][qualifiedName]
     !::create[file] can be usable: $f[^file::load[binary;http://;some http options here...]]$x[^xdoc::create[$f]]  
       URI default = disk path to requested document        URI default = disk path to requested document
       для каталогов конечный / обязателен        для каталогов конечный / обязателен
       !::create[file] can be usable:
           $f[^file::load[binary;http://;some HTTP options here...]]
           $x[^xdoc::create[$f]]
     !::load[file.xml[;опции]]      !::load[file.xml[;опции]]
     !.transform[rules.xsl|xdoc][[params hash]] выдаёт dom      !.transform[rules.xsl|xdoc][[params hash]] выдаёт dom
         шаблон кэшируется, кэш обновляется при изменении даты файла шаблона,          шаблон кэшируется, кэш обновляется при изменении даты файла шаблона,
Line 891  xdoc(xnode) Line 913  xdoc(xnode)
     !$node.previousSibling      !$node.previousSibling
     !$node.nextSibling      !$node.nextSibling
     !$node.ownerDocument = xdoc      !$node.ownerDocument = xdoc
       !$node.prefix
       !$node.namespaceURI
     !$element_node.attributes = hash of xnodes      !$element_node.attributes = hash of xnodes
     !$element_node.tagName      !$element_node.tagName
     !$attribute_node.specified = boolean      !$attribute_node.specified = boolean
Line 939  xdoc(xnode) Line 963  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);      !NodeList getElementsByTagNameNS(in DOMString namespaceURI, in DOMString localName)
       !boolean hasAttributes()
   
     !XPath:      !XPath:
     !^node.select[xpath/query/expression] = array of nodes,       !^node.select[xpath/query/expression] = array of nodes, 
Line 1085  DATA::=string | file | hash Line 1110  DATA::=string | file | hash
     !а также, возможно, указать опции:      !а также, возможно, указать опции:
         !$.method[GET|POST|HEAD]          !$.method[GET|POST|HEAD]
         !$.timeout(3)  << в секундах, по-умолчанию =2          !$.timeout(3)  << в секундах, по-умолчанию =2
           !$.cookies[
                   $.имя[значение]
           ]
         !$.headers[          !$.headers[
         !    $поле[значение] << значение имеет формат, как $response:ЗАГОЛОВОК          !    $.поле[значение] << значение имеет формат, как $response:ЗАГОЛОВОК
         !]          !]
         $.enctype[multipart/form-data]          $.enctype[multipart/form-data]
         $.form[          $.form[
Line 1141  DATA::=string | file | hash Line 1169  DATA::=string | file | hash
 Xесли в MAIN будет определён флаг $ORIGINS(1) то вместо обычного вывода страницы будет  Xесли в MAIN будет определён флаг $ORIGINS(1) то вместо обычного вывода страницы будет
     выдан список фрагментов результата с указанием их происхождения      выдан список фрагментов результата с указанием их происхождения
   
   !если в MAIN определён $SIGPIPE(1) то в случае, если обработка была прервана пользователем, сообщение
           об этом будет записано в parser3.log (раньше оно всегда писалось)
   
 !если описание метода содержит локальную переменную result в явном виде  !если описание метода содержит локальную переменную result в явном виде
     (есть и неявная переменная)      (есть и неявная переменная)
     то код вывода строковых литералов не попадает в конечный байт-код,      то код вывода строковых литералов не попадает в конечный байт-код,

Removed from v.1.195  
changed lines
  Added in v.1.211


E-mail: