parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Насчет @ifdef[condition;yes;no] -- глюки какие-то...

Ramesses II 29.10.2002 23:23 / 29.10.2002 23:28

Как и было присоветовано, определил оператор
@ifdef[condition;yes;no]
^if(def $condition){$yes}{$no}
в том же .p-файле функция, заменяющая тэг TD+параметры:
@td[wth;ht;bgcol;class;aln;vln;cols;rows][w;h;bc;cl;a;v;cs;rs]
^ifdef[$wth;$w[ WIDTH=$wth]]
^ifdef[$ht;$h[ HEIGHT=$ht]]
^ifdef[$bgcol;$bc[ BGCOLOR=$bgcol]]
^ifdef[$class;$cl[ CLASS=$class]]
^ifdef[$aln;$a[ ALIGN=$aln]]
^ifdef[$vln;$v[ VALIGN=$vln]]
^ifdef[$cols;$cs[ COLSPAN=$cols]]
^ifdef[$rows;$rs[ ROWSPAN=$rows]]
<TD${w}${h}${bc}${cl}${a}${v}${cs}${rs}>
в результате, при выставлении в документе вызовов типа
^td[;100;;;left;top;3]
получаю в ХТМЛ такой тэг (и примерно то же самое по всему документу):
<TD WIDTH= HEIGHT=100 BGCOLOR= CLASS= ALIGN=left VALIGN=top COLSPAN=3 ROWSPAN=>
в результате весь документ похЕрен... все стили и цвета -- абсолютно другие...

В то же время, при коде без ifdef:
@td[wth;ht;bgcol;class;aln;vln;cols;rows][w;h;bc;cl;a;v;cs;rs]
^if(def $wth){$w[ WIDTH=$wth]}{}
^if(def $ht){$h[ HEIGHT=$ht]}{}
^if(def $bgcol){$bc[ BGCOLOR=$bgcol]}{}
^if(def $class){$cl[ CLASS=$class]}{}
^if(def $aln){$a[ ALIGN=$aln]}{}
^if(def $vln){$v[ VALIGN=$vln]}{}
^if(def $cols){$cs[ COLSPAN=$cols]}{}
^if(def $rows){$rs[ ROWSPAN=$rows]}{}
<TD${w}${h}${bc}${cl}${a}${v}${cs}${rs}>
все работает нормально...

Где тут ошибка?

PS:
1. пытался прописать по всем ifdef'ам вариант NO как $var[]
2. пытался прописать ВСЕ переменные как локальные
3. пытался уменьшить количество переменных за счет конструкций типа
^ifdef[$var;$var[ PARAMETER=$var]]
все хуже и хуже...

HEEEEEEEEEEEEEEEEEEEEEEELP!!!! :)