Передача параметров черех хеш
vadbars 27.01.2003 12:09
Есть задачка: организовать передачу некоей функции большого числа параметров, которые не меняют алгоритма, а касаются, к примеру, оформления вывода результатов (цвет, шрифт и т.д.). Типичный случай - навигация, календарь и т.п.
Хочется добиться того, чтобы без передачи параметров использовалось значение (оформление) по умолчанию, а переданный параметр имел приоритет перед дефолтным.
Я сделал это так:
@t_table[tablename;param1]
#В теле функции определяю хеш с default значениями
$param[
$.table[border=0 cellSpacing=1 cellPadding=0 width=100% align=center bgColor=#999999]
$.tr[bgColor=#FFFFFF]
$.td[align=center noWrap]
$.td_nocontent[bgColor=#999999]
# если попался неизвестный ключ хеша - применяем таблицу стилей default
$._default[class=default]
]
# если были переданы иные параметры (через хеш param1),
# заменим ими дефолтные значения
^if(def $param1){
^param.foreach[key;value]{
$param.$key[^if(def $param1.$key){$param1.$key}{$param.$key}]
}
}
# ну и сама функция
...
<table $param.table>
<tr $param.tr>
<td $param.td>$content</td>
...
<td $param.td_nocontent> ^;</td>
</tr>
</table>
Можно, конечно, сделать это "правильнее" - через CSS и везде писАть типа <td class="$default_CSS_name">.
Меня смутили исходники ArtLebedevStudio-страниц - бОльшая часть параметров оформления определяется в тегах, а не через CSS. Кроссбраузерность, однако... :-$
А теперь, внимание, - вопрос:
Скажите что-нибудь плохое про такой подход :-)
Может быть, есть более красивый ("спортивный") вариант?
Прошу прощения за целый hash вопросов, но очень хочется писАть код "в духе Parsera (с)PAF" :-).
- Передача параметров черех хеш, vadbars 27.01.2003 12:09
- ^default, Александр Петросян (PAF) [M] 27.01.2003 13:02
- CSS, HTML, egr 27.01.2003 12:18