Diff for /parser3/operators.ru.txt between versions 1.91 and 1.109

version 1.91, 2002/10/21 09:06:53 version 1.109, 2003/01/16 09:07:20
Line 6  Xне сделано, видимо, не будет сделано Line 6  Xне сделано, видимо, не будет сделано
 операторы  операторы
     !^eval(выражение)[формат] выражение, кроме обычных функций::      !^eval(выражение)[формат] выражение, кроме обычных функций::
         !допустимы #комментарии          !допустимы #комментарии
                 работают до конца строки или закрывающейся круглой скобки              работают до конца строки или закрывающейся круглой скобки
                 внутри комментария допустимы вложенные круглые скобки              внутри комментария допустимы вложенные круглые скобки
         !из неочевидных операторов:          !из неочевидных операторов:
             !| побитный xor              !| побитный xor
             !|| логический xor              !|| логический xor
Line 227  odbc    c:\drives\y\parser3project\odbc\ Line 227  odbc    c:\drives\y\parser3project\odbc\
   
 !void  !void
     !^имя.length[]      !^имя.length[]
         0          0
     !^имя.pos[...]      !^имя.pos[...]
         -1          -1
     !^имя.int[]  (default)       !^имя.int[]  (default) 
Line 275  odbc    c:\drives\y\parser3project\odbc\ Line 275  odbc    c:\drives\y\parser3project\odbc\
         опции поиска+=          опции поиска+=
         g заменить все вхождения, а не одно          g заменить все вхождения, а не одно
     !^строка.split[разделитель][[lrhv]]      !^строка.split[разделитель][[lrhv]]
         l слева направо [default]          l слева направо [default]
         r справа налево          r справа налево
         h nameless таблица          h nameless таблица
         v таблица из столбца piece [default]          v таблица из столбца piece [default]
     !^строка.{l|r}split[разделитель] таблица из столбца $piece      !^строка.{l|r}split[разделитель] таблица из столбца $piece
         оставлен для совместимости          оставлен для совместимости
     !^строка.upper|lower[]       !^строка.upper|lower[] 
     X^строка.truncate(предел терпенья) стиль :(      X^строка.truncate(предел терпенья) стиль :(
     !^строка.length[]      !^строка.length[]
Line 303  odbc    c:\drives\y\parser3project\odbc\ Line 303  odbc    c:\drives\y\parser3project\odbc\
     !^table::create[[nameless]]{данные} старое имя "set"      !^table::create[[nameless]]{данные} старое имя "set"
     !^table::create[table][[$.limit(1) $.offset(5) $.offset[cur]]]      !^table::create[table][[$.limit(1) $.offset(5) $.offset[cur]]]
         клонирует таблицу              клонирует таблицу    
     !^table::load[[nameless;]путь]      !^table::load[[nameless;]путь[;опции]]
         !если не nameless, названия колонок берутся из первой строки          !если не nameless, названия колонок берутся из первой строки
         !пустые строки, и строки в первой колонке содержащие '#', игнорируются                  !пустые строки, и строки в первой колонке содержащие '#', игнорируются        
     !^table::sql{query}[[$.limit(2) $.offset(4) todo:$.default{ ^table::create[...] }]]      !^table::sql{query}[[$.limit(2) $.offset(4) todo:$.default{ ^table::create[...] }]]
     !^таблица.save[[nameless|append;]путь]      !^таблица.save[[nameless|append;]путь]
     !$таблица.поле      !$таблица.поле
     !$таблица.fields+  из named таблицы выдаёт текущую запись как Hash      !$таблица.fields  из named таблицы выдаёт текущую запись как Hash
     !^таблица.menu{тело}[разделитель]      !^таблица.menu{тело}[разделитель]
     !^таблица.offset[[whence]](5) сдвигает; без параметра - печатает offset      !^таблица.offset[[whence]](5) сдвигает; без параметра - печатает offset
         !whence=cur|set          !whence=cur|set
Line 328  odbc    c:\drives\y\parser3project\odbc\ Line 328  odbc    c:\drives\y\parser3project\odbc\
     !^таблица.flip[] выдаёт транспонированную, надо куда-то сложить, потом пользовать      !^таблица.flip[] выдаёт транспонированную, надо куда-то сложить, потом пользовать
     !^таблица.locate[поле;значение] передвигает текущую строку, если найдёт. выдаёт bool      !^таблица.locate[поле;значение] передвигает текущую строку, если найдёт. выдаёт bool
     !^таблица.locate(логическое выражение) передвигает текущую строку, если найдёт. выдаёт bool      !^таблица.locate(логическое выражение) передвигает текущую строку, если найдёт. выдаёт bool
     !^таблица.hash[поле, что будет ключом][[поле значений|table поля значений]][[$.distinct(1)]]      !^таблица.hash{[поле]|{код}|(выражение)}[[поле значений|table поля значений]][[$.distinct(1)]]
         значением $hash.ключ будет hash в котором поля значений будут ключами          значением $hash.ключ будет hash в котором поля значений будут ключами
         поля значений могут быть не указаны, тогда ими будут все столбцы, включая ключевой          поля значений могут быть не указаны, тогда ими будут все столбцы, включая ключевой
     !^таблица.columns[]+ таблица из одного столбца $column      !^таблица.columns[]+ таблица из одного столбца $column
Line 344  odbc    c:\drives\y\parser3project\odbc\ Line 344  odbc    c:\drives\y\parser3project\odbc\
     !$hash.ключ      !$hash.ключ
         !_default - специальный ключ, если задан,           !_default - специальный ключ, если задан, 
         то при обращении по ключу, которому нет соответствия, выдаётся _default значение           то при обращении по ключу, которому нет соответствия, выдаётся _default значение 
       !$hash.fields выдает $hash. чтобы класс hash был чуть больше похож на класс table
     !^hash::create[[!copy_from_hash|Xcopy_from_hashfile]]      !^hash::create[[!copy_from_hash|Xcopy_from_hashfile]]
         создаёт новый hash, копию старого          создаёт новый hash, копию старого
     !^hash.add[слагаемое]      !^hash.add[слагаемое]
Line 365  odbc    c:\drives\y\parser3project\odbc\ Line 366  odbc    c:\drives\y\parser3project\odbc\
 !form  !form
     [берётся первый элемент из одноимённых из GET, потом первый из POST]      [берётся первый элемент из одноимённых из GET, потом первый из POST]
     !$form:поле = string/file       !$form:поле = string/file 
       !$form:nameless = поле со значением поля без имени "?value&...", "...&value&...", "...&value"
       !$form:qtail = строка со значением текста после второго "?xxxxx", если там не было ',' [imap]
     !$form:fields = hash со всеми полями формы      !$form:fields = hash со всеми полями формы
     !$form:tables.поле = table с одним столбцом "field" со значениями "поля"      !$form:tables.поле = table с одним столбцом "field" со значениями "поля"
     !$form:image-map = поле со значением ?1,2 приписки при использовании server-site image map      !$form:imap = хэш с ключами 'x' и 'y'
           со значением ?1,2 приписки при использовании server-site image map
   
 !env  !env
     !$env:переменная      !$env:переменная
Line 399  odbc    c:\drives\y\parser3project\odbc\ Line 403  odbc    c:\drives\y\parser3project\odbc\
         !значение поля или атрибута может быть string или date          !значение поля или атрибута может быть string или date
         ! если дата, она будет преобразована к формату "Sun, 25-Aug-2002 12:03:45 GMT"          ! если дата, она будет преобразована к формату "Sun, 25-Aug-2002 12:03:45 GMT"
     !$response:body[DATA]  замещает стандартный ответ      !$response:body[DATA]  замещает стандартный ответ
       !$response:download[DATA]  замещает стандартный ответ, 
           выставляет флаг, заставляющий browser предложить download
     !$response:status      !$response:status
     !^response:clear[] забыть все заданные response поля      !^response:clear[] забыть все заданные response поля
     !$response:charset      !$response:charset
Line 564  Xhashfile Line 570  Xhashfile
     !$картинка[^image::measure[DATA]]      !$картинка[^image::measure[DATA]]
         смотрит на .ext case insensitive,           смотрит на .ext case insensitive, 
         умеет мерить пока только .gif и .jpg .jpeg          умеет мерить пока только .gif и .jpg .jpeg
       !$image.exif << hash после measure jpeg с exif информацией 
           !$image.exif.DateTime & co 
               [полный список см. http://www.ba.wakwak.com/~tsuruzoh/Computer/Digicams/exif-e.html]
           !числа типа int/double,
           !даты типа date
           !перечисления в виде hash с ключами 0..count-1
     !$картинка.src .width .height      !$картинка.src .width .height
     !$картинка.line-width  число=ширина линий      !$картинка.line-width  число=ширина линий
        !$картинка.line-style строка=стиль линий '*** * '='*** * *** * *** * '         !$картинка.line-style строка=стиль линий '*** * '='*** * *** * *** * '
Line 607  Xhashfile Line 619  Xhashfile
     !^file:delete[имя файла]      !^file:delete[имя файла]
     !^file:find[имя файла][{когда не нашли}]      !^file:find[имя файла][{когда не нашли}]
     !^file:list[путь[;шаблон]] = table с колонкой name      !^file:list[путь[;шаблон]] = table с колонкой name
     !^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][;опции]]
     !$файл_который_был_loaded.size      !$файл_который_был_loaded.size
     !^file::stat[имя файла]      !^file::stat[имя файла]
     !$файл_который_был_stated.size !.adate !.mdate !.cdate      !$файл_который_был_stated.size !.adate !.mdate !.cdate
     !^file::cgi[имя файла[;env hash[;1cmd[;2line[;3ar[;4g[;5s]]]]]]]      !^file::cgi[имя файла[;env hash +options[;1cmd[;2line[;3ar[;4g[;5s]]]]]]]
         возвращённый заголовок рассыпается на $поля          возвращённый заголовок рассыпается на $поля
         $status          $status
         $stderr          $stderr
     !^file::exec[имя файла[;env hash $.stdin[текст][;1cmd[;2line[;3ar[;4g[;5s;...under win32 max 10 args]]]]]]]      !^file::exec[имя файла[;env hash[;1cmd[;2line[;3ar[;4g[;5s;...under win32 max 10 args]]]]]]]
           options:
               $.stdin[текст]  если текст пуст, отключается автоматическое пересовывание данных HTTP-POST 
     !^file:move[старое имя файла;новое имя файла]       !^file:move[старое имя файла;новое имя файла] 
         можно переименовывать и двигать каталоги[win32: но не через границу дисков]          можно переименовывать и двигать каталоги[win32: но не через границу дисков]
         каталоги для dest создаются с правами 775          каталоги для dest создаются с правами 775
Line 708  xdoc(xnode) Line 722  xdoc(xnode)
     !::create[[URI]][qualifiedName]      !::create[[URI]][qualifiedName]
       URI default = disk path to requested document        URI default = disk path to requested document
       для каталогов конечный / обязателен        для каталогов конечный / обязателен
     !::load[file.xml]      !::load[file.xml[;опции]]
     !.transform[rules.xsl|xdoc][[params hash]] выдаёт dom      !.transform[rules.xsl|xdoc][[params hash]] выдаёт dom
         шаблон кэшируется, кэш обновляется при изменении даты файла шаблона,          шаблон кэшируется, кэш обновляется при изменении даты файла шаблона,
         или изменении даты файла "имя шаблона.stamp"[проверка даты stamp приоритетнее]          или изменении даты файла "имя шаблона.stamp"[проверка даты stamp приоритетнее]
Line 867  xdoc(xnode) Line 881  xdoc(xnode)
             url    time                  url    time    
             url    time                  url    time    
             url    time                  url    time    
     !$status:db hash  
         !cache hash db_home=>tables table  
             name    time    users  
             name    time    users  
             name    time    users  
     !$status:stylesheet      !$status:stylesheet
         !cache table          !cache table
             file    time              file    time
Line 927  xdoc(xnode) Line 936  xdoc(xnode)
         там лежат в обратном порядке имена[name] и места вызовов[file line]           там лежат в обратном порядке имена[name] и места вызовов[file line] 
         операторов/методов, приведших к ошибке.          операторов/методов, приведших к ошибке.
   
   !при загрузке файла (file::load, table::load, xdoc::load) можно указать такое имя файла:
       !http://domain/document?params
       !а также, возможно, указать опции:
           !$.method[GET|HEAD]
           !$.timeout(3)  << в секундах, по-умолчанию =2
           !$.headers[
           !    $поле[значение] << значение имеет формат, как $response:ЗАГОЛОВОК
           !]
           !по-умолчанию, user-agent=parser3
           !по-умолчанию, получение http status != 200 >> создает http.status ошибку,
           !это можно отключить, передав
           !$.any-status(1)
       !file::load в дополнительные поля записывает ПОЛЕ:значение (имена полей ответа заглавными буквами)
   
 !системные типы ошибок:  !системные типы ошибок:
     !parser.compile       ^test[}                компиляция (непарная скобка, ...)      !parser.compile       ^test[}                компиляция (непарная скобка, ...)
     !parser.runtime       ^if(0).                параметры (больше/меньше, чем нужно, не тех типов, ...)      !parser.runtime       ^if(0).                параметры (больше/меньше, чем нужно, не тех типов, ...)
Line 935  xdoc(xnode) Line 958  xdoc(xnode)
     !file.lock                                                        shared/exclusive lock error      !file.lock                                                        shared/exclusive lock error
     !file.missing         ^file:delete[delme]                         not found      !file.missing         ^file:delete[delme]                         not found
     !file.access          ^table::load[.]                             no rights      !file.access          ^table::load[.]                             no rights
       !file.seek                                                        seek failed
     !image.format         ^image::measure[index.html]                 not gif/jpg      !image.format         ^image::measure[index.html]                 not gif/jpg
     !sql.connect          ^connect[mysql://baduser:pass@host/db]{}    not found/timeout      !sql.connect          ^connect[mysql://baduser:pass@host/db]{}    not found/timeout
     !sql.execute          ^void:sql{select bad}                       syntax error      !sql.execute          ^void:sql{select bad}                       syntax error
Line 947  xdoc(xnode) Line 971  xdoc(xnode)
     !smtp.execute                                                     communication error      !smtp.execute                                                     communication error
     !email.format         hren tam@null.ru                            wrong email format(bad chars/empty)      !email.format         hren tam@null.ru                            wrong email format(bad chars/empty)
     !email.send           $MAIL.sendmail[/shit]                       sendmail not executable      !email.send           $MAIL.sendmail[/shit]                       sendmail not executable
       !http.host            ^file::load[http://notfound/there]          host not found
       !http.connect         ^file::load[http://not_accepting/there]     host found, but do not accept connections
       !http.timeout         ^file::load[http://host/doc]                whole load operation failed to complete in # seconds
       !http.response        ^file::load[http://ok/there]                host found, connection accepted, bad answer
       !http.status          ^file::load[http://ok/there]                host found, connection accepted, status!=200
           
 !нужно выключить русский apache: CharsetDisable on  !нужно выключить русский apache: CharsetDisable on
   

Removed from v.1.91  
changed lines
  Added in v.1.109


E-mail: