Суббота, 13 Декабрь 2008
nginx: ssi for
Представляю патч который реализует комманды for
и endfor
.
Пример использования:
На входе имеем sample.html
:
<!--# set var="test" value="muha ha hi" --><!--# for data="test" var="string" sep=" " -->
<p>T: <!--# echo var="string" --></p><!--# endfor -->
<!--# set var="test" value="muha ha he " --><!--# for data="test" var="string" sep=" " -->
<p>T: <!--# echo var="string" --></p><!--# endfor -->
<!--# set var="test" value="muha ha hah" --><!--# for data="test" var="string" sep=" " -->
<p>T: <!--# echo var="string" --></p><!--# endfor -->
<!--# set var="test" value="muha ha huh " --><!--# for data="test" var="string" sep=" " -->
<p>T: <!--# echo var="string" --></p><!--# endfor -->
<!--# set var="test" value="abc " --><!--# for data="test" var="string" sep=" " -->
<p>T: <!--# echo var="string" --></p><!--# endfor -->
<!--# set var="test" value="cba" --><!--# for data="test" var="string" sep=" " -->
<p>T: <!--# echo var="string" --></p><!--# endfor -->
<!--# set var="test" value="1 2" --><!--# for data="test" var="string" sep=" " -->
<p>T: <!--# echo var="string" --></p><!--# endfor -->
<!--# set var="test" value="z x" --><!--# for data="test" var="string" sep=" " -->
<p>T: <!--# echo var="string" --></p><!--# endfor -->
<!--# set var="test" value="y" --><!--# for data="test" var="string" sep=" " -->
<p>T: <!--# echo var="string" --></p><!--# endfor -->
<!--# set var="test" value="q " --><!--# for data="test" var="string" sep=" " -->
<p>T: <!--# echo var="string" --></p><!--# endfor -->
<!--# set var="test" value="" --><!--# for data="test" var="string" sep=" " -->
<p>T: <!--# echo var="string" --></p><!--# endfor -->
<!--# set var="test" value=" " --><!--# for data="test" var="string" sep=" " -->
<p>T: <!--# echo var="string" --></p><!--# endfor -->
На выходе получаем:
HTTP/1.1 200 OK
Server: nginx/0.7.26
Date: Sat, 13 Dec 2008 02:55:43 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
<p>T: muha</p>
<p>T: ha</p>
<p>T: hi</p>
<p>T: muha</p>
<p>T: ha</p>
<p>T: he</p>
<p>T: muha</p>
<p>T: ha</p>
<p>T: hah</p>
<p>T: muha</p>
<p>T: ha</p>
<p>T: huh</p>
<p>T: abc</p>
<p>T: cba</p>
<p>T: 1</p>
<p>T: 2</p>
<p>T: z</p>
<p>T: x</p>
<p>T: y</p>
<p>T: q</p>
<p>T: </p>
<p>T: </p>
<p>T: </p>
<p>T: </p>
<p>T: </p>
<p>T: </p>
Для работы требуется иметь интерфейс реализованый в прошлом патче. А тут можно взять оба патча.
Параметры sep
и var
опциональны. Если нет sep то делится по
(пробелу), а если нет var
значение записывается в переменную _
(подчеркивание).
Комментарии
Как задать в качестве разделителя перевод строки \r\n ?
Форма комментирования для «nginx: ssi for»
вставить эти символы в sep, именно CRLF а не \r\n
Некисло так ) А есть у тебя патч для увеличения уровня вложенности if?
Нет. Я хотел его написать, но проще обходиться без него. Например так:
:)