Correct col0 for row delimiters.

This commit is contained in:
Dominik Pantůček 2023-03-29 14:22:17 +02:00
parent 71c9e7a5fe
commit 19a370e448

View file

@ -237,25 +237,33 @@
res)))))) res))))))
;; Creates table row delimiter based on column widths. ;; 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 (string-append
left left
(string-intersperse (let cloop ((cws cws)
(map (res "")
(lambda (cw) (idx 0))
(string-repeat line cw)) (if (null? cws)
cws) res
cross) (cloop (cdr cws)
(string-append res
(case idx
((0) "")
((1) cross0)
(else cross))
(string-repeat line (car cws)))
(add1 idx))))
right)) right))
;; Returns table row delimiter based on column widths, extracting ;; Returns table row delimiter based on column widths, extracting
;; line style from particular row of border style vector. ;; 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) (define (sref i)
(vector-ref svec (+ i (* srow 4)))) (vector-ref svec (+ i (* srow 4))))
(table-row-delimiter cws (table-row-delimiter cws
(if tb (sref 0) "") (if tb (sref 0) "")
(sref 1) (sref 1)
(if (or cb cb0) (sref 2) "")
(if cb (sref 2) "") (if cb (sref 2) "")
(if tb (sref 3) ""))) (if tb (sref 3) "")))
@ -287,6 +295,7 @@
(let loop ((rows table) (let loop ((rows table)
(res (if table-border (res (if table-border
(list (table-row-delimiter/styled table-border (list (table-row-delimiter/styled table-border
col0-border
column-border column-border
cws cws
stylevec stylevec
@ -296,6 +305,7 @@
(if (null? rows) (if (null? rows)
(let ((res0 (if table-border (let ((res0 (if table-border
(cons (table-row-delimiter/styled table-border (cons (table-row-delimiter/styled table-border
col0-border
column-border column-border
cws cws
stylevec stylevec
@ -311,6 +321,7 @@
(and row0-border (and row0-border
(= idx 1))) (= idx 1)))
(cons (table-row-delimiter/styled table-border (cons (table-row-delimiter/styled table-border
col0-border
column-border column-border
cws cws
stylevec stylevec
@ -374,7 +385,7 @@
(table-row->lines '(("a ") ("bb") ("ccc") (" ")) "]" "|" "|" "[" #f) (table-row->lines '(("a ") ("bb") ("ccc") (" ")) "]" "|" "|" "[" #f)
'("]a |bb|ccc| [")) '("]a |bb|ccc| ["))
(test-equal? table-row-delimiter (test-equal? table-row-delimiter
(table-row-delimiter '(1 2 3 1) "/" "-" "+" "\\") (table-row-delimiter '(1 2 3 1) "/" "-" "+" "+" "\\")
"/-+--+---+-\\") "/-+--+---+-\\")
)) ))