From f4b016bdea7281682d9031c905e0f9ae4c92f685 Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Mon, 9 Nov 2015 21:02:35 +0100 Subject: [PATCH] Add modulo operator for the list iterator so the templates can do multi level list operations --- webcit/subst.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/webcit/subst.c b/webcit/subst.c index 7aa54bff8..e76044f48 100644 --- a/webcit/subst.c +++ b/webcit/subst.c @@ -2242,10 +2242,20 @@ int conditional_ITERATE_FIRSTN(StrBuf *Target, WCTemplputParams *TP) return Ctx->n == 0; } +int conditional_ITERATE_ISMOD(StrBuf *Target, WCTemplputParams *TP) +{ + IterateStruct *Ctx = CTX(CTX_ITERATE); + + return Ctx->n == 0; +} + int conditional_ITERATE_LASTN(StrBuf *Target, WCTemplputParams *TP) { IterateStruct *Ctx = CTX(CTX_ITERATE); - return Ctx->LastN; + + long divisor = GetTemplateTokenNumber(Target, TP, 2, 1); + long expectRemainder = GetTemplateTokenNumber(Target, TP, 2, 1); + return Ctx->n % divisor == expectRemainder; } @@ -2978,6 +2988,9 @@ InitModule_SUBST RegisterConditional("COND:ITERATE:FIRSTN", 2, conditional_ITERATE_FIRSTN, CTX_ITERATE); + RegisterConditional("COND:ITERATE:ISMOD", 3, + conditional_ITERATE_ISMOD, + CTX_ITERATE); RegisterNamespace("ITERATE:ODDEVEN", 0, 0, tmplput_ITERATE_ODDEVEN, NULL, CTX_ITERATE); RegisterNamespace("ITERATE:KEY", 0, 0, tmplput_ITERATE_KEY, NULL, CTX_ITERATE); -- 2.30.2