From 19a370e44832c077739b02be375b0988c229855a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Wed, 29 Mar 2023 14:22:17 +0200 Subject: [PATCH] Correct col0 for row delimiters. --- table.scm | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/table.scm b/table.scm index baa76ad..4c5a31a 100644 --- a/table.scm +++ b/table.scm @@ -237,25 +237,33 @@ res)))))) ;; Creates table row delimiter based on column widths. - (define (table-row-delimiter cws left line cross right) + (define (table-row-delimiter cws left line cross0 cross right) (string-append left - (string-intersperse - (map - (lambda (cw) - (string-repeat line cw)) - cws) - cross) + (let cloop ((cws cws) + (res "") + (idx 0)) + (if (null? cws) + res + (cloop (cdr cws) + (string-append res + (case idx + ((0) "") + ((1) cross0) + (else cross)) + (string-repeat line (car cws))) + (add1 idx)))) right)) ;; Returns table row delimiter based on column widths, extracting ;; line style from particular row of border style vector. - (define (table-row-delimiter/styled tb cb cws svec srow) + (define (table-row-delimiter/styled tb cb0 cb cws svec srow) (define (sref i) (vector-ref svec (+ i (* srow 4)))) (table-row-delimiter cws (if tb (sref 0) "") (sref 1) + (if (or cb cb0) (sref 2) "") (if cb (sref 2) "") (if tb (sref 3) ""))) @@ -287,6 +295,7 @@ (let loop ((rows table) (res (if table-border (list (table-row-delimiter/styled table-border + col0-border column-border cws stylevec @@ -296,6 +305,7 @@ (if (null? rows) (let ((res0 (if table-border (cons (table-row-delimiter/styled table-border + col0-border column-border cws stylevec @@ -311,6 +321,7 @@ (and row0-border (= idx 1))) (cons (table-row-delimiter/styled table-border + col0-border column-border cws stylevec @@ -374,7 +385,7 @@ (table-row->lines '(("a ") ("bb") ("ccc") (" ")) "]" "|" "|" "[" #f) '("]a |bb|ccc| [")) (test-equal? table-row-delimiter - (table-row-delimiter '(1 2 3 1) "/" "-" "+" "\\") + (table-row-delimiter '(1 2 3 1) "/" "-" "+" "+" "\\") "/-+--+---+-\\") ))