--- parser3/operators.ru.txt 2002/10/14 08:29:36 1.86 +++ parser3/operators.ru.txt 2002/11/20 10:01:01 1.95 @@ -6,8 +6,8 @@ Xне сделано, видимо, не будет сделано операторы !^eval(выражение)[формат] выражение, кроме обычных функций:: !допустимы #комментарии - работают до конца строки или закрывающейся круглой скобки - внутри комментария допустимы вложенные круглые скобки + работают до конца строки или закрывающейся круглой скобки + внутри комментария допустимы вложенные круглые скобки !из неочевидных операторов: !| побитный xor !|| логический xor @@ -92,7 +92,8 @@ Xне сделано, видимо, не будет сделано default as-is !^taint[[lang]][код] default "just tainted, language unknown" - !^process{строка, которая будет process-ed, как код} + !^process[[$caller.CLASS|$object|$КЛАСС:CLASS]]{строка, которая будет process-ed, как код} + по умолчанию, методы компилируются в $self [в случае оператора, $self=$MAIN:CLASS] !^connect[protocol://строка соединения]]{код с ^sql[...]-ями} !mysql://user:pass@{host[:port]|[/unix/socket]}/database? charset=cp1251_koi8& @@ -167,8 +168,10 @@ odbc c:\drives\y\parser3project\odbc\ !и есть исключение: ^untaint[html]{код} не оптимизируется Xбезотностительно флажка - !у всех макросов есть локальная переменная $result, если в неё что положить, + !у всех методов есть локальная переменная $result, если в неё что положить, !то _это_ будет результатом макроса, а не его тело + !у всех методов есть локальная переменная $caller, в ней лежит родительский stack frame, + !если туда записать !use(^use или @USE) ищет файл... !1. ...если путь начинается с /, то считается, что это путь от корня веб пространства @@ -224,7 +227,7 @@ odbc c:\drives\y\parser3project\odbc\ !void !^имя.length[] - 0 + 0 !^имя.pos[...] -1 !^имя.int[] (default) @@ -254,7 +257,7 @@ odbc c:\drives\y\parser3project\odbc\ пример: ^if(def $form:name) не пуста? ^if($user.isAlive) истина? [автопреобразование к числу, не ноль?] - !^string::sql{query}[[$.limit(2) $.offset(4) $.default{n/a}]] + !^string::sql{query}[[$.limit(1) $.offset(4) $.default{n/a}]] результат запроса должен быть один столбец/одна строка !^имя.int[] .int(default) целочисленное значение строки. если ломается преобразование, берётся default @@ -272,12 +275,12 @@ odbc c:\drives\y\parser3project\odbc\ опции поиска+= g заменить все вхождения, а не одно !^строка.split[разделитель][[lrhv]] - l слева направо [default] - r справа налево - h nameless таблица - v таблица из столбца piece [default] + l слева направо [default] + r справа налево + h nameless таблица + v таблица из столбца piece [default] !^строка.{l|r}split[разделитель] таблица из столбца $piece - оставлен для совместимости + оставлен для совместимости !^строка.upper|lower[] X^строка.truncate(предел терпенья) стиль :( !^строка.length[] @@ -325,7 +328,7 @@ odbc c:\drives\y\parser3project\odbc\ !^таблица.flip[] выдаёт транспонированную, надо куда-то сложить, потом пользовать !^таблица.locate[поле;значение] передвигает текущую строку, если найдёт. выдаёт bool !^таблица.locate(логическое выражение) передвигает текущую строку, если найдёт. выдаёт bool - !^таблица.hash[поле, что будет ключом][[поле значений|table поля значений]][[$.distinct(1)]] + !^таблица.hash{[поле]|{код}|(выражение)}[[поле значений|table поля значений]][[$.distinct(1)]] значением $hash.ключ будет hash в котором поля значений будут ключами поля значений могут быть не указаны, тогда ими будут все столбцы, включая ключевой !^таблица.columns[]+ таблица из одного столбца $column @@ -362,8 +365,12 @@ odbc c:\drives\y\parser3project\odbc\ !form [берётся первый элемент из одноимённых из GET, потом первый из POST] !$form:поле = string/file + !$form:nameless = поле со значением поля без имени "?value&...", "...&value&...", "...&value" + !$form:qtail = строка со значением текста после второго "?xxxxx", если там не было ',' [imap] !$form:fields = hash со всеми полями формы !$form:tables.поле = table с одним столбцом "field" со значениями "поля" + !$form:imap = хэш с ключами 'x' и 'y' + со значением ?1,2 приписки при использовании server-site image map !env !$env:переменная @@ -607,11 +614,13 @@ Xhashfile !$файл_который_был_loaded.size !^file::stat[имя файла] !$файл_который_был_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 $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[старое имя файла;новое имя файла] можно переименовывать и двигать каталоги[win32: но не через границу дисков] каталоги для dest создаются с правами 775 @@ -627,6 +636,8 @@ Xhashfile !^file:basename[/a/some.tar.gz]=some.tar.gz !^file:justname[/a/some.tar.gz]=some.tar !^file:justext[/a/some.tar.gz]=gz + !/some/page.html: ^file:fullpath[a.gif] => /some/a.gif + math !$math:PI