Суббота, 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?
Нет. Я хотел его написать, но проще обходиться без него. Например так:
:)