<HTML><BODY>Насколько удалось выяснить:<br><br>__size__ вообще нету, т.е. упоминание его -- косяк в CHANGES<br><br>__key__ справедлив в случае итерирования хэша. <br><br>т.е. если бы EMPLOYEE_INFO был не массив, а хэш:<br>{<br> 'EMPLOYEE_INFO': {<br> 'a': { 'NAME': "Иванов Иван", 'JOB': "Архитектор" },<br> 'b': { 'NAME': "Петров Петр", 'JOB': "Строитель" },<br> 'c': { 'NAME': "Сидоров Сидор", 'JOB': "Рабочий" },<br> 'd': { 'NAME': "Вася Пупки", 'JOB': "Учитель" }<br> }<br>}<br><br>.....<br><p>if (oRegs[iSrcReg].GetType() == CDT::HASH_VAL)<br> {<br> CDT::Iterator it = oRegs[iSrcReg].Begin();<br> for (INT_32 iI = 0; iI < iIdx; ++iI) { ++it; }<br> oItVal["__value__"] = it->second;<br> oItVal["__key__"] = it->first;<br> oRegs[iDstReg >> 8] = oItVal;<br> }<br> else<br> {<br> oItVal["__value__"] = oRegs[iSrcReg][iIdx];<br> oItVal["__index__"] = iIdx;<br> oRegs[iDstReg >> 8] = oItVal;<br> }<br>...</p><br><br>Четверг, 4 апреля 2013, 18:32 +04:00 от Алексей Сундуков<public-mail@alekciy.ru>:<br>
<blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;" class="mailru-blockquote">
<div id="">
<div class="js-helper js-readmsg-msg">
<style type="text/css"></style>
<div id="style_13650860090000000626" class="mr_read__body">
<base target="_self" href="https://e.mail.ru/cgi-bin/">
<div id="style_13650860090000000626_BODY">Извиняюсь за небольшой офтопик, но хотел уточнить у общественности<br>
использующей ctpp 2.8 есть ли проблемы с контекстными переменными<br>
__key__ и __size__? Столкнулся с тем, что в цикле невозможно получить<br>
размер __size__ для текущего цикла.<br>
<br>
_____________________<br>
Пример:<br>
Исходные json данные:<br>
[root@mail testdata]# cat items.json<br>
{<br>
'EMPLOYEE_INFO': [<br>
{ 'NAME': "Иванов Иван", 'JOB': "Архитектор" },<br>
{ 'NAME': "Петров Петр", 'JOB': "Строитель" },<br>
{ 'NAME': "Сидоров Сидор", 'JOB': "Рабочий" },<br>
{ 'NAME': "Вася Пупки", 'JOB': "Учитель" }<br>
]<br>
}<br>
<br>
<br>
Сам шаблон:<br>
[root@mail testdata]# cat items.tmpl<br>
<table width="100%"><br>
<TMPL_foreach EMPLOYEE_INFO as EMPLOYEE><br>
<tr><br>
<td>#:<br>
first=<TMPL_var EMPLOYEE.__first__>,<br>
last=<TMPL_var EMPLOYEE.__last__>,<br>
index=<TMPL_var EMPLOYEE.__index__>,<br>
key=<TMPL_var EMPLOYEE.__key__>,<br>
inner=<TMPL_var EMPLOYEE.__inner__>,<br>
odd=<TMPL_var EMPLOYEE.__odd__>,<br>
even=<TMPL_var EMPLOYEE.__even__>,<br>
size=<TMPL_var EMPLOYEE.__size__><br>
</td><br>
<td>Имя: <TMPL_VAR NAME></td><br>
<td>Должность: <TMPL_VAR JOB></td><br>
</tr><br>
</TMPL_foreach><br>
</table><br>
<br>
<br>
Получаю:<br>
[root@mail testdata]# /opt/ctpp2/2.8.2/bin/ctpp2c items.tmpl items.ct2<br>
[root@mail testdata]# /opt/ctpp2/2.8.2/bin/ctpp2vm items.ct2 items.json<br>
WARNING: [limit of steps] not set, use default value of 10240<br>
<table width="100%"><br>
<br>
<tr><br>
<td>#:<br>
first=1,<br>
last=,<br>
index=0,<br>
key=,<br>
inner=,<br>
odd=1,<br>
even=,<br>
size=<br>
</td><br>
<td>Имя: Иванов Иван</td><br>
<td>Должность: Архитектор</td><br>
</tr><br>
...<br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="sentmsg?compose&To=nginx%2dru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></div>
<base target="_self" href="https://e.mail.ru/cgi-bin/">
</div>
</div>
</div>
</blockquote>
<br></BODY></HTML>