From 7bd4c7d222c6e61859762a644483f8e110e5b3f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Mon, 15 May 2023 11:17:02 +0200 Subject: [PATCH] Issue warnings for missing date/month information in credit statements. --- src/brmember-parser.scm | 41 ++++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/src/brmember-parser.scm b/src/brmember-parser.scm index 7531a3a..5236062 100644 --- a/src/brmember-parser.scm +++ b/src/brmember-parser.scm @@ -113,21 +113,32 @@ (string-first+rest (car rec))) value))) ((credit) - (brmember-sub-set mr output key - (map - (lambda (rec) - (let* ((fr (string-first+rest (car rec))) - (amt (string->number (car fr))) - (msg (cdr fr)) - (mlst (string-split msg)) - (mon (if (null? mlst) - #f - (parse-cal-day/month (car mlst)))) - (rmsg (if mon - (string-intersperse (cdr mlst) " ") - msg))) - (list amt mon rmsg))) - value))) + (let loop ((mr mr) + (src-credits value) + (credits '())) + (if (null? src-credits) + (brmember-sub-set mr output key credits) + (let* ((rec (caar src-credits)) + (line-number (cdar src-credits)) + (fr (string-first+rest rec)) + (amt (string->number (car fr))) + (msg (cdr fr)) + (mlst (string-split msg)) + (mon (if (null? mlst) + #f + (parse-cal-day/month (car mlst)))) + (rmsg (if mon + (string-intersperse (cdr mlst) " ") + msg))) + (loop (if mon + mr + (brmember-add-highlight mr line-number + "missing date or month information" + 3 + 'warning)) + (cdr src-credits) + (cons (list amt mon rmsg) + credits)))))) ((nick) (let ((mr0 (brmember-sub-set mr output key (car value)))) (if (irregex-search (irregex "[ \\t]" 'u) (car value))