From 7a5975df6322c9787ca84bad19351749afe0ccab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Sun, 19 Mar 2023 21:00:22 +0100 Subject: [PATCH] Handles list of error symbols. --- member-file.scm | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/member-file.scm b/member-file.scm index 009a50d..c9d2597 100644 --- a/member-file.scm +++ b/member-file.scm @@ -102,17 +102,19 @@ ;; Reports error with highlighted source line(s), configured via the ;; *member-file-check-syntax* parameter. - (define (report-line-error file-name lines highlights message) + (define (report-line-error file-name lines highlight message) (when (not (eq? (*member-file-check-syntax*) 'quiet)) (print "Error in " file-name ": " message) (newline) - (print-source-listing lines highlights + (print-source-listing lines (list highlight) (*member-file-context*) a:error a:default "" "" "...")) (if (eq? (*member-file-check-syntax*) 'error) (exit 1) - #f)) + (list member-file-error-symbol + (list highlight + message)))) ;; Parses given key-value line. Key is up to first space, value is the ;; rest of the line. If the line doesn't contain anything, returns #f. @@ -136,16 +138,16 @@ (if (member key all-valid-keys) (list key val) (if file-name - (report-line-error file-name lines (list line-number) + (report-line-error file-name lines line-number (sprintf "Invalid key ~A" key)) (error 'split-member-line (sprintf "Invalid key ~A" key))))) (if (member (string->symbol lc) all-valid-keys) (if file-name - (report-line-error file-name lines (list line-number) + (report-line-error file-name lines line-number (sprintf "No value for key ~A" lc)) (error 'split-member-line (sprintf "No value for key ~A" lc))) (if file-name - (report-line-error file-name lines (list line-number) + (report-line-error file-name lines line-number (sprintf "No value for invalid key ~A" lc)) (error 'split-member-line (sprintf "No value for invalid key ~A" lc))))))))) @@ -183,7 +185,9 @@ (case k ((card desfire credit) (dict-set d k (cons v (dict-ref d k '())))) (else - (dict-set d k v)))))) + (if (eq? k member-file-error-symbol) + (dict-set d k (cons v (dict-ref d k '()))) + (dict-set d k v))))))) ;; Converts given key in member info dictionary from period markers ;; list to periods.