Welcome! Log In Create A New Profile

Advanced

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

Влад Максимов
April 04, 2013 11:14AM
Насколько удалось выяснить:

__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@alekciy.ru>:
>Извиняюсь за небольшой офтопик, но хотел уточнить у общественности
>использующей ctpp 2.8 есть ли проблемы с контекстными переменными
>__key__ и __size__? Столкнулся с тем, что в цикле невозможно получить
>размер __size__ для текущего цикла.
>
>_____________________
>Пример:
>Исходные json данные:
>[root@mail testdata]# cat items.json
>{
>        'EMPLOYEE_INFO': [
>                { 'NAME': "Иванов Иван", 'JOB': "Архитектор" },
>                { 'NAME': "Петров Петр", 'JOB': "Строитель" },
>                { 'NAME': "Сидоров Сидор", 'JOB': "Рабочий" },
>                { 'NAME': "Вася Пупки", 'JOB': "Учитель" }
>        ]
>}
>
>
>Сам шаблон:
>[root@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@mail testdata]# /opt/ctpp2/2.8.2/bin/ctpp2c items.tmpl items.ct2
>[root@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@nginx.org
>http://mailman.nginx.org/mailman/listinfo/nginx-ru
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

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

Алексей Сундуков April 04, 2013 10:34AM

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

Влад Максимов April 04, 2013 11:14AM

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

Алексей Сундуков April 04, 2013 01:00PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 311
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready