k001
k001
:...

April 2032
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

k001 [userpic]
TAL

А ещё есть такой язык - TAL. Template, мать его, Attribute Language. Это часть Zope. Под катом чудовищный пример TAL-кода, который я, мать мою, написал.

<tal:block i18n:domain="pfm" tal:define="form here/form; groups form/get_groups;"><p tal:condition="here/getBodyPre" tal:replace="here/getBodyPre" /><p tal:condition="options/prepend" tal:replace="options/prepend" /><tal:block tal:repeat="group groups"><p tal:condition="python:group not in ('Default','Comments')" tal:replace="group" /><tal:block tal:condition="python:group=='Phone'">:</tal:block><tal:block tal:repeat="field python:form.get_fields_in_group(group)"><tal:block tal:define="ft field/title;" tal:condition="field/mailsplitter"><p tal:condition="python:group!='Phone'" tal:replace="ft" /><tal:block tal:condition="python:ft=='Comments'"> [multi-line]</tal:block><tal:block tal:condition="python:group!='Phone'">:</tal:block> <tal:block tal:repeat="line field/mailsplitter"><p tal:replace="line"/><tal:block tal:condition="python:group!='Phone'">
</tal:block></tal:block><tal:block tal:condition="python:ft=='Comments'">--end-of-multi-line
</tal:block></tal:block></tal:block><tal:block tal:condition="python:group=='Phone'">
</tal:block></tal:block><p tal:condition="options/append" tal:replace="options/append" /><p tal:condition="here/getBodyPost" tal:replace="here/getBodyPost" /></tal:block>

Comments

OMG. Вот поэтому я везде темплейтю через xslt или kid.

Не вполне честно: сишный код, написанный в одну строчку, тоже выглядит страшновато. Думаю, если прогнать это через xmllint, будет ну хоть чуть-чуть симпатичнее :)

А вообще страх Божий, конечно :)

Сишный код по определению не может выглядеть страшно. Жутко – может, но не страшно! :-)

Тут дело в том, что сей код в данном случае генерит плейн текст, а все пробелы и переводы строк в этом TALе подаются as is. Для HTML в общем-то всё равно, сколько и где там пробелов, а для плейн текста важно. Ввиду чего и приходится всё в одну-две-три строчки утеснять.

Ну, плейнтекстогенератор так на любом языке будет выглядеть. На XSLT - в точности так.

Что ж ты хотел от платформы с именем Zope.

Какой ужас!
Это ещё хуже, чем XSL...