--- 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) то вместо обычного вывода страницы будет