From 2c222f14103a1c3b6e29ad5fcd84e92594665dbe Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Wed, 15 Apr 2020 20:25:26 -0400 Subject: Wrap subthreads in
with reply count --- html.c | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'html.c') diff --git a/html.c b/html.c index 090bfab..352e229 100644 --- a/html.c +++ b/html.c @@ -205,14 +205,36 @@ int htmlThreadOpen(FILE *file, const struct Envelope *envelope) { return error; } -int htmlSubthreadOpen(FILE *file) { - return templateRender( - file, TEMPLATE(
), NULL, NULL +static size_t threadCount(struct List thread) { + size_t count = 0; + for (size_t i = 0; i < thread.len; ++i) { + if (thread.ptr[i].type == List) { + count += threadCount(thread.ptr[i].list); + } else { + count++; + } + } + return count; +} + +int htmlSubthreadOpen(FILE *file, struct List thread) { + const char *template = TEMPLATE( +
+ [replies] repl[ies] ); + size_t count = threadCount(thread); + char replies[32]; + snprintf(replies, sizeof(replies), "%zu", count); + struct Variable vars[] = { + { "replies", replies }, + { "ies", (count > 1 ? "ies" : "y") }, + {0}, + }; + return templateRender(file, template, vars, escapeXML); } int htmlSubthreadClose(FILE *file) { - return templateRender(file, TEMPLATE(
), NULL, NULL); + return templateRender(file, TEMPLATE(
), NULL, NULL); } int htmlThreadClose(FILE *file) { -- cgit 1.4.1