--- parser3/operators.txt 2002/06/25 13:36:43 1.53 +++ parser3/operators.txt 2002/08/28 10:53:58 1.79 @@ -216,6 +216,10 @@ odbc c:\drives\y\parser3project\odbc\ !void + !^имя.length[] + 0 + !^имя.pos[...] + -1 !^имя.int[] (default) 0 или default !^имя.double[] (default) @@ -260,7 +264,13 @@ odbc c:\drives\y\parser3project\odbc\ !^строка.match[шаблон][опции поиска]{замена} опции поиска+= g заменить все вхождения, а не одно + !^строка.split[разделитель][[lrhv]] + l слева направо [default] + r справа налево + h nameless таблица + v таблица из столбца piece [default] !^строка.{l|r}split[разделитель] таблица из столбца $piece + оставлен для совместимости !^строка.upper|lower[] X^строка.truncate(предел терпенья) стиль :( !^строка.length[] @@ -272,14 +282,17 @@ odbc c:\drives\y\parser3project\odbc\ <0 = не найдено !^строка.replace[$таблица_подстановок_строка_на_строку] !^строка.save[[append;]путь] + !^строка.normalize[] выдает другую строку, в которой фрагменты на одном языке объединены + полезно делать перед сложными match операциями, если вы знаете, что входная строка + состоит из большого числа фрагментов !table в выражении логическое значение равно "не пуста?" числовое значение равно count[] !^table::create[[nameless]]{данные} старое имя "set" - !^table::create[table] - клонирует таблицу + !^table::create[table][[$.limit(1) $.offset(5) $.offset[cur]]] + клонирует таблицу !^table::load[[nameless;]путь] !если не nameless, названия колонок берутся из первой строки !пустые строки, и строки в первой колонке содержащие '#', игнорируются @@ -300,7 +313,7 @@ odbc c:\drives\y\parser3project\odbc\ X^таблица.remove(position[;count]) - стирает запись из текущей позиции [стирает запись из конкретной позиции] [стирает count записей] - !^таблица.join[таблица] - добавляет записи из таблицы. + !^таблица.join[таблица][$.limit(1) $.offset(5) $.offset[cur]] - добавляет записи из таблицы. таблицы должны иметь одинаковую структуру. !^таблица.flip[] выдаёт транспонированную, надо куда-то сложить, потом пользовать !^таблица.locate[поле;значение] передвигает текущую строку, если найдёт. выдаёт bool @@ -355,6 +368,7 @@ odbc c:\drives\y\parser3project\odbc\ !request !$request:query + !$request:body unprocessed POST request body !$request:uri X!$request:browser это hash, поля: !$type = ie/nn и !$version = номер, скажем 5.5 @@ -371,6 +385,8 @@ odbc c:\drives\y\parser3project\odbc\ !значение может быть string а может быть hash: ! $value[abc] field: {abc}<<часть ! $attribute[zzz] field: abc; {attribute=zzz}<<часть + !значение поля или атрибута может быть string или date + ! если дата, она будет преобразована к формату "Sun, 25-Aug-2002 12:03:45 GMT" !$response:body[DATA] замещает стандартный ответ !$response:status !^response:clear[] забыть все заданные response поля @@ -588,7 +604,7 @@ Xhashfile возвращённый заголовок рассыпается на $поля $status $stderr - !^file::exec[имя файла[;env hash[;1cmd[;2line[;3ar[;4g[;5s;...under win32 max 10 args]]]]]]] + !^file::exec[имя файла[;env hash $.stdin[текст][;1cmd[;2line[;3ar[;4g[;5s;...under win32 max 10 args]]]]]]] !^file:move[старое имя файла;новое имя файла] можно переименовывать и двигать каталоги[win32: но не через границу дисков] каталоги для dest создаются с правами 775 @@ -627,6 +643,8 @@ math количество дней с epoch [1 января 1970 (UTC)], дробное !всё происходит в localtime, !временная зона задаётся вне parser средствами OS + $date:UTC-offset сколько дней надо прибавить,чтобы попасть в local время + $date:TZ наш часовой пояс, дробное, в часах (где-то есть с точностью до получаса) !^date::now[] !^date::now(смещение в днях) выдаёт сейчас+смещение !^date::create(дней с epoch) // старое имя set @@ -635,13 +653,13 @@ math для удобного создания по значению из базы формат1: %Y[-%m[-%d[ %H[:%M[:%S]]]]] формат2: %H:%M[:%S] - !$date.year month day hour minute second weekday todo:yearday + !$date.year month day hour minute second weekday yearday(0...) daylightsaving read-only !^date.roll[year|month|day](+-смещение) сдвигает дату !^date.sql-string[] %Y-%m-%d %H:%M:%S where published='$дата.sql-string[]' !^date:calendar[rus|eng;год;месяц] выдаёт неименованную таблицу - столбцы: 0..6 + столбцы: 0..6, week, weekyear !^date:calendar[rus|eng;год;месяц;день] выдаёт именнованную таблицу столбцы: year, month, day, weekday @@ -673,10 +691,12 @@ xdoc(xnode) !равно текущей кодировке выходной страницы, $response:charset ::sql{...} - !::create{} старое имя 'set' - !::create[qualifiedName] + !::create[[URI]]{} старое имя 'set' + !::create[[URI]][qualifiedName] + URI default = disk path to requested document + для каталогов конечный / обязателен !::load[file.xml] - !.transform[rules.xsl][[params hash]] выдаёт dom + !.transform[rules.xsl|xdoc][[params hash]] выдаёт dom шаблон кэшируется, кэш обновляется при изменении даты файла шаблона, или изменении даты файла "имя шаблона.stamp"[проверка даты stamp приоритетнее] } any error in xml/xslt libs !smtp.connect not found/timeout !smtp.execute communication error - - + !email.format hren tam@null.ru wrong email format(bad chars/empty) + !email.send $MAIL.sendmail[/shit] sendmail not executable + !нужно выключить русский apache: CharsetDisable on !если в MAIN будет определён флаг $ORIGINS(1) то вместо обычного вывода страницы будет