--- parser3/operators.ru.txt 2002/09/17 10:59:25 1.84 +++ parser3/operators.ru.txt 2002/10/23 09:32:16 1.94 @@ -17,6 +17,7 @@ Xне сделано, видимо, не будет сделано пустая строка не defined пустая таблица не defined пустой hash не defined + ^if(method $hash.delete){yes} !eq ne lt gt le ge для сравнения строк, !in "/dir/" для проверки ["внутри не допустимы, если надо сравнить со сложным, @@ -91,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& @@ -166,8 +168,10 @@ odbc c:\drives\y\parser3project\odbc\ !и есть исключение: ^untaint[html]{код} не оптимизируется Xбезотностительно флажка - !у всех макросов есть локальная переменная $result, если в неё что положить, + !у всех методов есть локальная переменная $result, если в неё что положить, !то _это_ будет результатом макроса, а не его тело + !у всех методов есть локальная переменная $caller, в ней лежит родительский stack frame, + !если туда записать !use(^use или @USE) ищет файл... !1. ...если путь начинается с /, то считается, что это путь от корня веб пространства @@ -222,10 +226,10 @@ odbc c:\drives\y\parser3project\odbc\ !void - !^имя.length[] - 0 - !^имя.pos[...] - -1 + !^имя.length[] + 0 + !^имя.pos[...] + -1 !^имя.int[] (default) 0 или default !^имя.double[] (default) @@ -253,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 @@ -319,18 +323,18 @@ odbc c:\drives\y\parser3project\odbc\ X^таблица.remove(position[;count]) - стирает запись из текущей позиции [стирает запись из конкретной позиции] [стирает count записей] - !^таблица.join[таблица][$.limit(1) $.offset(5) $.offset[cur]] - добавляет записи из таблицы. + !^таблица.join[таблица][$.limit(1) $.offset(5) $.offset[cur]] - добавляет записи из таблицы. таблицы должны иметь одинаковую структуру. !^таблица.flip[] выдаёт транспонированную, надо куда-то сложить, потом пользовать !^таблица.locate[поле;значение] передвигает текущую строку, если найдёт. выдаёт bool !^таблица.locate(логическое выражение) передвигает текущую строку, если найдёт. выдаёт bool - !^таблица.hash[поле, что будет ключом][[поле значений|table поля значений]][[$.distinct(1)]] + !^таблица.hash{[поле]|{код}|(выражение)}[[поле значений|table поля значений]][[$.distinct(1)]] значением $hash.ключ будет hash в котором поля значений будут ключами поля значений могут быть не указаны, тогда ими будут все столбцы, включая ключевой !^таблица.columns[]+ таблица из одного столбца $column !$отобранное[^таблица.select(выражение)] = таблица из тех же столбцов и строк, у которых условие совпало - $adults[^man.select($man.age>=18)] - ^таблица.color[цвет1;цвет2] + $adults[^man.select($man.age>=18)] + ^таблица.color[цвет1;цвет2] !hash @@ -361,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:переменная @@ -626,6 +634,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 @@ -833,7 +843,7 @@ xdoc(xnode) does not support data NO_MODIFICATION_ALLOWED_ERR If an attempt is made to modify an - object where modifications are not + object where modifications are not allowed NOT_FOUND_ERR If an attempt was made to reference a @@ -883,6 +893,11 @@ xdoc(xnode) !ixrss integral shared text memory size !idrss integral unshared data size !isrss integral unshared stack size + !tv_sec + !tv_usec + $s[$status:rusage] + ^s.tv_sec.format[%.0f].^s.tv_usec.format[%06.0f] + !DATA::=string | file