Дмитрий Сергеевич (axshavan) wrote,
Дмитрий Сергеевич
axshavan

Axcore

Под эгидой переподготовки платформы для создания [сайта] так называемого "центра компетенции" для моего основного места работы (что такое этот самый "центр компетенции" - я представляю крайне слабо) я пишу на работе вместо моделирования арсенид-галлиевых структур движок для сайта. Ну я про него уже говорил раньше, называться он будет ориентировочно "Акскор".

Сейчас я добрался до процессора шаблонов и ушел в ступор. Дело в том, что использовать Smarty я не хочу, для меня интереснее изобрести велосипед самостоятельно. Но с наскоку, как выяснилось, процессор шаблонов не сочинить.
Если бы все ограничивалось только простым отображением строковых переменных, весь процессор шаблонов выглядел бы так:
// $_tplvars = array(variable_name => variable_value);
// $text - текст запарсиваемого шаблона
$_keys = array_keys($_tplvars);
for($i = 0; $i < count($_keys); $i++)
{
	$text = preg_replace('`\{'.$_keys[$i].'\}`S', $_tplvars[$_keys[$i]], $text);
}
return $text;
Но должны быть еще хотя бы две функции в шаблоне. Это цикл и ветвление, без них нормально ни массив отобразить, да и вообще ничего толком без них не сделать. А вот с этим уже начинается жопа. Пример:
{for ...}
	some text
	{for ...}
		some text
	{/for}
{/for}
some text
{for ...}
	some text
{/for}
Тут мы видим обычный пример - два вложенных цикла и еще один просто так. Регулярное выражение не понимает, к какому циклу какой закрывающий тэг {/for} относится, и вырезает в качестве тела цикла все от начала первого до конца третьего. Я вижу тут один выход: без регулярных выражений перебирать весь текст самостоятельно. Ужас %F.
Ну а затем уже все будет просто.
Tags: web
Subscribe

  • Плёнка №199

    Всякая нудная техническая информация - что это за плёнка, чего фотографии такие контрастные, и так далее - расположена после снимка номер шесть. 1…

  • Фотографии из мини-походика 18 июля

    На прошлой неделе мы со Славкой прошли пешком чуть больше 19 километров по южным предместьям Праги. Я выбрал маршрут таким образом, чтоб там были и…

  • Инопланетный чертополох

    Пару дней назад ходили вечером гулять по окрестностям. Я повстречал возле пруда Асуан заросли какой-то инопланетной херни. Это такие шипастые шары…

  • Post a new comment

    Error

    Comments allowed for friends only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 8 comments