From f6242d663f3277744b72d1772b8118f50ce47e95 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Wilfried=20G=C3=B6esgens?= Date: Sat, 13 Dec 2008 10:29:42 +0000 Subject: [PATCH] * add counter and lastn to iterators: ITERATE:N -> number of actual element in list ITERATE:LASTN -> is this the last member? evaluate it with ?("COND:SUBST", n, "ITERATE:LASTN", 1) --- webcit/subst.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/webcit/subst.c b/webcit/subst.c index 259373290..0463c6f8f 100644 --- a/webcit/subst.c +++ b/webcit/subst.c @@ -1477,6 +1477,8 @@ void tmpl_iterate_subtmpl(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, vo HashIterator *It; HashList *List; HashPos *it; + int nMembersUsed; + int nMembersCounted = 0; long len; const char *Key; void *vContext; @@ -1555,12 +1557,15 @@ void tmpl_iterate_subtmpl(StrBuf *Target, int nArgs, WCTemplateToken *Tokens, vo else List = It->StaticList; + nMembersUsed = GetCount(List); SubBuf = NewStrBuf(); it = GetNewHashPos(List, 0); while (GetNextHashPos(List, it, &len, &Key, &vContext)) { svprintf(HKEY("ITERATE:ODDEVEN"), WCS_STRING, "%s", (oddeven) ? "odd" : "even"); svprintf(HKEY("ITERATE:KEY"), WCS_STRING, "%s", Key); + svputlong("ITERATE:N", nMembersCounted); + svputlong("ITERATE:LASTN", ++nMembersCounted == nMembersUsed); if (It->DoSubTemplate != NULL) It->DoSubTemplate(SubBuf, vContext, Tokens); -- 2.39.2