Diff for /parser3/operators.ru.txt between versions 1.100 and 1.121

version 1.100, 2002/11/25 15:07:29 version 1.121, 2003/11/03 11:22:06
Line 92  Xне сделано, видимо, не будет сделано Line 92  Xне сделано, видимо, не будет сделано
         default as-is          default as-is
     !^taint[[lang]][код]      !^taint[[lang]][код]
         default "just tainted, language unknown"          default "just tainted, language unknown"
     !^process[[$caller.CLASS|$object|$КЛАСС:CLASS]]{строка, которая будет process-ed, как код}      !^process[[$caller.CLASS|$object|$КЛАСС:CLASS]]{строка, которая будет process-ed, как код}[во что переименовать @main]
       !^process..[путь][во что переименовать @main]
       по умолчанию, методы компилируются в $self [в случае оператора, $self=$MAIN:CLASS]        по умолчанию, методы компилируются в $self [в случае оператора, $self=$MAIN:CLASS]
     !^connect[protocol://строка соединения]]{код с ^sql[...]-ями}      !^connect[protocol://строка соединения]]{код с ^sql[...]-ями}
         !mysql://user:pass@{host[:port]|[/unix/socket]}/database?          !mysql://user:pass@{host[:port]|[/unix/socket]}/database?
Line 271  odbc    c:\drives\y\parser3project\odbc\ Line 272  odbc    c:\drives\y\parser3project\odbc\
         s singleline = $ считается концом всего текста          s singleline = $ считается концом всего текста
         m multiline = $ считается концом строки[\n], не концом всего текста          m multiline = $ считается концом строки[\n], не концом всего текста
         g найти все вхождения, а не одно          g найти все вхождения, а не одно
           ' создавать столбцы prematch, match, postmatch
     !^строка.match[шаблон][опции поиска]{замена}      !^строка.match[шаблон][опции поиска]{замена}
         опции поиска+=          опции поиска+=
         g заменить все вхождения, а не одно          g заменить все вхождения, а не одно
Line 301  odbc    c:\drives\y\parser3project\odbc\ Line 303  odbc    c:\drives\y\parser3project\odbc\
         логическое значение равно "не пуста?"          логическое значение равно "не пуста?"
         числовое значение равно count[]          числовое значение равно count[]
     !^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] $.reverse(1)]]
         клонирует таблицу              клонирует таблицу    
           reverse << сзаду на перёд (работает пока только в locate, в table::create НЕ работает)
     !^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 326  odbc    c:\drives\y\parser3project\odbc\ Line 329  odbc    c:\drives\y\parser3project\odbc\
     !^таблица.join[таблица][$.limit(1) $.offset(5) $.offset[cur]]     - добавляет записи из таблицы.       !^таблица.join[таблица][$.limit(1) $.offset(5) $.offset[cur]]     - добавляет записи из таблицы. 
         таблицы должны иметь одинаковую структуру.          таблицы должны иметь одинаковую структуру.
     !^таблица.flip[] выдаёт транспонированную, надо куда-то сложить, потом пользовать      !^таблица.flip[] выдаёт транспонированную, надо куда-то сложить, потом пользовать
     !^таблица.locate[поле;значение] передвигает текущую строку, если найдёт. выдаёт bool      !^таблица.locate[поле;значение][[$.limit(1) $.offset(5) $.offset[cur] $.reverse(1)]] 
     !^таблица.locate(логическое выражение) передвигает текущую строку, если найдёт. выдаёт bool          передвигает текущую строку, если найдёт. выдаёт bool
     !^таблица.hash{[поле]|{код}|(выражение)}[[поле значений|table поля значений]][[$.distinct(1)]]      !^таблица.locate(логическое выражение)[[$.limit(1) $.offset(5) $.offset[cur] $.reverse(1)]]
           передвигает текущую строку, если найдёт. выдаёт bool
       !^таблица.hash{[поле]|{код}|(выражение)}[[поле значений|table поля значений]][[$.distinct(1) $.distinct[tables]]]
         значением $hash.ключ будет hash в котором поля значений будут ключами          значением $hash.ключ будет hash в котором поля значений будут ключами
         поля значений могут быть не указаны, тогда ими будут все столбцы, включая ключевой          поля значений могут быть не указаны, тогда ими будут все столбцы, включая ключевой
           если distinct содержит true, то не будет ошибки при повторяющихся ключах
           если distinct содержит tables, то будет создан hash из таблиц, содержащих строки с ключом
     !^таблица.columns[]+ таблица из одного столбца $column      !^таблица.columns[]+ таблица из одного столбца $column
     !$отобранное[^таблица.select(выражение)] = таблица из тех же столбцов и строк, у которых условие совпало      !$отобранное[^таблица.select(выражение)] = таблица из тех же столбцов и строк, у которых условие совпало
         $adults[^man.select($man.age>=18)]          $adults[^man.select($man.age>=18)]
Line 344  odbc    c:\drives\y\parser3project\odbc\ Line 351  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 378  odbc    c:\drives\y\parser3project\odbc\ Line 386  odbc    c:\drives\y\parser3project\odbc\
 !cookie  !cookie
     !$cookie:имя считать старое или свежезаданное      !$cookie:имя считать старое или свежезаданное
     !$cookie:имя[значение] на 90 дней      !$cookie:имя[значение] на 90 дней
     !$cookie:имя[$.value[значение]  $.expires(дней, 0дней=session)]      !$cookie:имя[$.value[значение]  $.expires ЗНАЧЕНИЕ ]
       !значение поля expires может быть 'session', date, или число дней(0дней=session)
       ! если дата, она будет преобразована к формату "Sun, 25-Aug-2002 12:03:45 GMT"
   
 !request  !request
     !$request:query          !$request:query    
Line 402  odbc    c:\drives\y\parser3project\odbc\ Line 412  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 571  Xhashfile Line 583  Xhashfile
         !$image.exif.DateTime & co           !$image.exif.DateTime & co 
             [полный список см. http://www.ba.wakwak.com/~tsuruzoh/Computer/Digicams/exif-e.html]              [полный список см. http://www.ba.wakwak.com/~tsuruzoh/Computer/Digicams/exif-e.html]
         !числа типа int/double,          !числа типа int/double,
           !даты типа date
         !перечисления в виде hash с ключами 0..count-1          !перечисления в виде hash с ключами 0..count-1
     !$картинка.src .width .height      !$картинка.src .width .height
     !$картинка.line-width  число=ширина линий      !$картинка.line-width  число=ширина линий
Line 592  Xhashfile Line 605  Xhashfile
         если указана ширина_символа, то monospaced, если 0, то ширина_символа = ширине gif          если указана ширина_символа, то monospaced, если 0, то ширина_символа = ширине gif
     !^картинка.text(x;y)[текст_надписи] AS_IS      !^картинка.text(x;y)[текст_надписи] AS_IS
     !^картинка.length[текст_надписи] AS_IS      !^картинка.length[текст_надписи] AS_IS
     !^картинка.gif[] -- кодирует в FILE с content-type=image/gif      !^картинка.gif[возможно, имя файла] -- кодирует в FILE с content-type=image/gif
           имя файла будет использовано при $response:download
     !^картинка.arc(center x;center y;width;height;start in degrees;end in degrees;color)      !^картинка.arc(center x;center y;width;height;start in degrees;end in degrees;color)
     !^картинка.sector(center x;center y;width;height;start in degrees;end in degrees;color)      !^картинка.sector(center x;center y;width;height;start in degrees;end in degrees;color)
     !^картинка.circle(center x;center y;r;color)      !^картинка.circle(center x;center y;r;color)
Line 644  Xhashfile Line 658  Xhashfile
     !/some/page.html: ^file:fullpath[a.gif] => /some/a.gif      !/some/page.html: ^file:fullpath[a.gif] => /some/a.gif
   
   
 math  !math
     !$math:PI      !$math:PI
     !^math:round floor ceiling       !^math:round floor ceiling 
     !^math:trunc frac      !^math:trunc frac
Line 654  math Line 668  math
     !^math:degrees radians      !^math:degrees radians
     !^math:pow sqrt      !^math:pow sqrt
     !^math:random(ширина диапазона)      !^math:random(ширина диапазона)
     ^math:GUID {C2C0983C-E26E-4169-BD07-77ECE9405BA5}      !^math:uuid[]
           22C0983C-E26E-4169-BD07-77ECE9405BA5
           win32: пользуется cryptapi
           unix: пользуется /dev/urandom, 
               если нет, /dev/random, 
               если нет, rand 
               [на solaris /dev/random можно добавить]
       !^math:uid64[]
          BA39BAB6340BE370
       !^math:md5[string]
           выдает digest строки, длиной 16 байт в виде строки, 
           где байты digest выданы в hex виде, впритык, в нижнем регистре
     !^math:crypt[password;salt]      !^math:crypt[password;salt]
        salt prefix $apr1$ вызывает встроенный MD5 алгоритм,          salt prefix $apr1$ вызывает встроенный MD5 алгоритм, 
          если нет тела salt, оно создаётся случайным           если нет тела salt, оно создаётся случайным
Line 676  math Line 701  math
         для удобного создания по значению из базы          для удобного создания по значению из базы
         формат1: %Y[-%m[-%d[ %H[:%M[:%S]]]]]          формат1: %Y[-%m[-%d[ %H[:%M[:%S]]]]]
         формат2: %H:%M[:%S]          формат2: %H:%M[:%S]
     !$date.year month day  hour minute second  weekday yearday(0...) daylightsaving      !^date::unix-timestamp()
       !^date.unix-timestamp[]
       !$date.year month day  hour minute second  weekday yearday(0...) daylightsaving TZ
         read-only          read-only
           TZ="" << локальная зона
     !^date.roll[year|month|day](+-смещение) сдвигает дату      !^date.roll[year|month|day](+-смещение) сдвигает дату
       !^date.roll[TZ;Новая зона] говорит, что дата в таком-то часовом поясе: влияет на .hour&co
     !^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;год;месяц] выдаёт неименованную таблицу 
Line 864  xdoc(xnode) Line 893  xdoc(xnode)
         attribute that is already inuse          attribute that is already inuse
         elsewhere          elsewhere
   
   !memory
       !^memory:compact[] собрать мусор, освободив место под новые данные
       (предупреждение: память процесса никогда не освобождается)
       полезно делать перед XSL transform.
   
 !status  !status
     !чтобы класс был доступен, в apache нужно сказать       !чтобы класс был доступен, в apache нужно сказать 
     <Location /parser-status.html>      <Location /parser-status.html>
Line 877  xdoc(xnode) Line 911  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 905  xdoc(xnode) Line 934  xdoc(xnode)
            $s[$status:rusage]             $s[$status:rusage]
            ^s.tv_sec.format[%.0f].^s.tv_usec.format[%06.0f]             ^s.tv_sec.format[%.0f].^s.tv_usec.format[%06.0f]
   
       !$status:memory hash
           !used
               Includes some pages that were allocated but never written.          
   
           !free
   
           !ever_allocated_since_compact
               Return the number of bytes allocated since the last collection.     
   
           !ever_allocated_since_start
               Return the total number of bytes [EVER(c)PAF] allocated in this process.            
               Never decreases.                                                    
   
   
 !DATA::=string | file  !DATA::=string | file
   
Line 943  xdoc(xnode) Line 985  xdoc(xnode)
         !$.method[GET|HEAD]          !$.method[GET|HEAD]
         !$.timeout(3)  << в секундах, по-умолчанию =2          !$.timeout(3)  << в секундах, по-умолчанию =2
         !$.headers[          !$.headers[
         !    $поле[значение] << по-умолчанию, user-agent=parser3          !    $поле[значение] << значение имеет формат, как $response:ЗАГОЛОВОК
         !]          !]
     !file::load в дополнительные поля записывает ПОЛЕ:значение (имена полей ответа заглавными буквами)          !по-умолчанию, user-agent=parser3
           !по-умолчанию, получение http status != 200 >> создает http.status ошибку,
           !это можно отключить, передав
           !$.any-status(1)
           !$.charset[кодировка удалённых докуметов по-умолчанию] << если сервер вернёт content-type:charset=ОНА_ПЕРЕБИВАЕТ
       !file::load в дополнительные поля записывает
           !ПОЛЕ:значение (имена полей ответа заглавными буквами)
           !tables << хеш их ПОЛЕ->table с единственным столбцом "value". 
               в таких таблицах можно брать повторяющиеся заголовки. например, несколько set-cookies
               todo:сделать отдельный cookies
   
 !системные типы ошибок:  !системные типы ошибок:
     !parser.compile       ^test[}                компиляция (непарная скобка, ...)      !parser.compile       ^test[}                компиляция (непарная скобка, ...)
Line 970  xdoc(xnode) Line 1021  xdoc(xnode)
     !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.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.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.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.100  
changed lines
  Added in v.1.121


E-mail: