ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: [offtop] ctpp 2.8 и пустые контекстные переменные __key__ и __size__
  • From: Влад Максимов <vladsm@xxxxxxx>
  • Date: Thu, 04 Apr 2013 19:12:45 +0400
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mail.ru; s=mail; h=Content-Type:Message-ID:Reply-To:Date:Mime-Version:Subject:To:From; bh=9pOhfv0XOjce62KPbGNbiJWSqIk8NoxKp5vSAPDiMW8=; b=342HO0h23em9upfQmEj29DF2r2V2/WsQZ8vfi30p8CSrZ74FJFm4wFUOPgPez3uD5HNeJo+tR4KvfuuaBD2Jj3tOdFyTGFvYOjtCNmI2o0sJvG09t8DzN58EuuVFgXN7;

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

__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@xxxxxxxxxx>:
Извиняюсь за небольшой офтопик, но хотел уточнить у общественности
использующей 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@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.