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))))))
;; 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) "/" "-" "+" "+" "\\")
"/-+--+---+-\\")
))