Re: [offtop] ctpp 2.8 и пустые контекстные переменные __key__ и __size__

Влад Максимов vladsm at mail.ru
Thu Apr 4 15:12:45 UTC 2013


 Насколько удалось выяснить:

__size__ вообще нету, т.е. упоминание его --  косяк в CHANGES

__key__ справедлив в случае итерирования хэша. 

т.е. если бы EMPLOYEE_INFO был не массив, а хэш:
{
        'EMPLOYEE_INFO': {
              'a':  { 'NAME': "Иванов Иван", 'JOB': "Архитектор" },
              'b': { 'NAME': "Петров Петр", 'JOB': "Строитель" },
              'c':  { 'NAME': "Сидоров Сидор", 'JOB': "Рабочий" },
              'd':  { 'NAME': "Вася Пупки", 'JOB': "Учитель" }
        }
}

.....
if (oRegs[iSrcReg].GetType() == CDT::HASH_VAL)
{
  CDT::Iterator it = oRegs[iSrcReg].Begin();
  for (INT_32 iI = 0; iI < iIdx; ++iI) { ++it; }
  oItVal["__value__"] = it->second;
  oItVal["__key__"] = it->first;
  oRegs[iDstReg >> 8] = oItVal;
}
else
{
  oItVal["__value__"] = oRegs[iSrcReg][iIdx];
  oItVal["__index__"] = iIdx;
  oRegs[iDstReg >> 8] = oItVal;
}
...

Четверг,  4 апреля 2013, 18:32 +04:00 от Алексей Сундуков<public-mail at alekciy.ru>:
>Извиняюсь за небольшой офтопик, но хотел уточнить у общественности
>использующей ctpp 2.8 есть ли проблемы с контекстными переменными
>__key__ и __size__? Столкнулся с тем, что в цикле невозможно получить
>размер __size__ для текущего цикла.
>
>_____________________
>Пример:
>Исходные json данные:
>[root at mail testdata]# cat items.json
>{
>        'EMPLOYEE_INFO': [
>                { 'NAME': "Иванов Иван",   'JOB': "Архитектор" },
>                { 'NAME': "Петров Петр",   'JOB': "Строитель" },
>                { 'NAME': "Сидоров Сидор", 'JOB': "Рабочий" },
>                { 'NAME': "Вася Пупки",    'JOB': "Учитель" }
>        ]
>}
>
>
>Сам шаблон:
>[root at mail testdata]# cat items.tmpl
><table width="100%">
>    <TMPL_foreach EMPLOYEE_INFO as  EMPLOYEE>
>    <tr>
>        <td>#:
>                        first=<TMPL_var EMPLOYEE.__first__>,
>                        last=<TMPL_var EMPLOYEE.__last__>,
>                        index=<TMPL_var EMPLOYEE.__index__>,
>                        key=<TMPL_var EMPLOYEE.__key__>,
>                        inner=<TMPL_var EMPLOYEE.__inner__>,
>                        odd=<TMPL_var EMPLOYEE.__odd__>,
>                        even=<TMPL_var EMPLOYEE.__even__>,
>                        size=<TMPL_var EMPLOYEE.__size__>
>                </td>
>        <td>Имя: <TMPL_VAR NAME></td>
>        <td>Должность: <TMPL_VAR JOB></td>
>    </tr>
>        </TMPL_foreach>
></table>
>
>
>Получаю:
>[root at mail testdata]# /opt/ctpp2/2.8.2/bin/ctpp2c items.tmpl items.ct2
>[root at mail testdata]# /opt/ctpp2/2.8.2/bin/ctpp2vm items.ct2 items.json
>WARNING: [limit of steps] not set, use default value of 10240
><table width="100%">
>
>    <tr>
>        <td>#:
>                        first=1,
>                        last=,
>                        index=0,
>                        key=,
>                        inner=,
>                        odd=1,
>                        even=,
>                        size=
>                </td>
>        <td>Имя: Иванов Иван</td>
>        <td>Должность: Архитектор</td>
>    </tr>
>...
>_______________________________________________
>nginx-ru mailing list
>nginx-ru at nginx.org
>http://mailman.nginx.org/mailman/listinfo/nginx-ru
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20130404/0a4b35ed/attachment-0001.html>


Подробная информация о списке рассылки nginx-ru