diff --git a/lib/chibi/show.sld b/lib/chibi/show.sld index ead2b577..f0628720 100644 --- a/lib/chibi/show.sld +++ b/lib/chibi/show.sld @@ -1,7 +1,7 @@ (define-library (chibi show) (export - show fn fn-fork with with! each each-in-list call-with-output + show fn forked with with! each each-in-list call-with-output displayed written written-shared written-simply numeric numeric/comma numeric/si numeric/fitted nothing nl fl space-to tab-to escaped maybe-escaped diff --git a/lib/chibi/show/base.scm b/lib/chibi/show/base.scm index f4489db6..091d25b1 100644 --- a/lib/chibi/show/base.scm +++ b/lib/chibi/show/base.scm @@ -12,7 +12,7 @@ (define-environment-monad Show-Env (sequence: sequence) (bind: %fn) - (bind-fork: fn-fork) + (bind-fork: forked) (local: %with) (local!: with!) (return: return) @@ -139,5 +139,5 @@ ;;> \var{consumer}. (define (call-with-output producer consumer) (let ((out (open-output-string))) - (fn-fork (with ((port out) (output output-default)) producer) - (fn () (consumer (get-output-string out)))))) + (forked (with ((port out) (output output-default)) producer) + (fn () (consumer (get-output-string out)))))) diff --git a/lib/chibi/show/base.sld b/lib/chibi/show/base.sld index 8b2f8a46..53b73c91 100644 --- a/lib/chibi/show/base.sld +++ b/lib/chibi/show/base.sld @@ -1,7 +1,7 @@ (define-library (chibi show base) (export - show fn fn-fork with with! each each-in-list call-with-output + show fn forked with with! each each-in-list call-with-output displayed written written-shared written-simply numeric nothing escaped maybe-escaped numeric/si numeric/fitted numeric/comma ;; internal diff --git a/lib/chibi/show/column.scm b/lib/chibi/show/column.scm index 10863fbf..ede861cc 100644 --- a/lib/chibi/show/column.scm +++ b/lib/chibi/show/column.scm @@ -48,14 +48,14 @@ (if (list-queue-empty? queue) eof (list-queue-remove-front! queue))) - (fn-fork (fn () (with ((port out) (output output*)) - (call-with-current-continuation - (lambda (cc) - (set! return cc) - (each producer - (fn (output) - (set! resume #f) - (fn () (return nothing) nothing))))))) + (forked (fn () (with ((port out) (output output*)) + (call-with-current-continuation + (lambda (cc) + (set! return cc) + (each producer + (fn (output) + (set! resume #f) + (fn () (return nothing) nothing))))))) (consumer generate))))) (define (call-with-output-generators producers consumer) diff --git a/lib/chibi/show/pretty.scm b/lib/chibi/show/pretty.scm index 5eda8165..d248d86c 100644 --- a/lib/chibi/show/pretty.scm +++ b/lib/chibi/show/pretty.scm @@ -64,7 +64,7 @@ (abort fail)) (else (output-default str))))))))) - (fn-fork + (forked (with ((output output*) (port out)) proc) diff --git a/lib/chibi/show/write.scm b/lib/chibi/show/write.scm index 8e21bd02..5571319f 100644 --- a/lib/chibi/show/write.scm +++ b/lib/chibi/show/write.scm @@ -14,7 +14,7 @@ (define (string-replace-all str ch1 ch2) (let ((out (open-output-string))) (string-for-each - (lambda (ch) (write-char (if (eqv? ch ch1) ch2 ch) out)) + (lambda (ch) (display (if (eqv? ch ch1) ch2 ch) out)) str) (get-output-string out))) @@ -126,7 +126,10 @@ (comma-rule (default comma comma-rule)) (comma-sep (default commasep comma-sep)) (dec-sep (default decsep - (or decimal-sep (if (eqv? comma-sep #\.) #\, #\.))))) + (or decimal-sep (if (eqv? comma-sep #\.) #\, #\.)))) + (dec-ls (if (char? dec-sep) + (list dec-sep) + (reverse (string->list dec-sep))))) ;; General formatting utilities. (define (get-scale q) (expt radix (- (integer-log q radix) 1))) @@ -164,7 +167,9 @@ (let lp ((res res)) (cond ((and (pair? res) (eqv? 0 (car res))) (lp (cdr res))) - ((and (pair? res) (eqv? dec-sep (car res))) + ((and (pair? res) + (eqv? (car dec-ls) (car res)) + (null? (cdr dec-ls))) (if inexact? (cons 0 res) ; "1.0" (cdr res))) ; "1" @@ -185,7 +190,7 @@ ;; 15 decimals. ((if precision (< i precision) (< i 16)) (let ((res (if (zero? i) - (cons dec-sep (if (null? res) (cons 0 res) res)) + (append dec-ls (if (null? res) (cons 0 res) res)) res)) (q (quotient n d))) (cond @@ -218,7 +223,8 @@ ((string-cursorindex s (string-find s dec-sep)) + (string-cursor->index + s + (if (char? dec-sep) + (string-find s dec-sep) + (or (string-contains s dec-sep) + (string-cursor-end s)))) 0)) (diff (- (or decimal-align 0) dec-pos 1))) (if (positive? diff) diff --git a/lib/srfi/159.sld b/lib/srfi/159.sld index c081a46b..653c8cb0 100644 --- a/lib/srfi/159.sld +++ b/lib/srfi/159.sld @@ -4,7 +4,7 @@ (srfi 159 unicode) (srfi 159 color)) (export ;; base - show fn fn-fork with with! each each-in-list call-with-output + show fn forked with with! each each-in-list call-with-output displayed written written-shared written-simply numeric numeric/comma numeric/si numeric/fitted nothing nl fl space-to tab-to escaped maybe-escaped diff --git a/lib/srfi/159/base.sld b/lib/srfi/159/base.sld index 2e0838f6..c72efa01 100644 --- a/lib/srfi/159/base.sld +++ b/lib/srfi/159/base.sld @@ -2,7 +2,7 @@ (define-library (srfi 159 base) (import (chibi show)) (export - show fn fn-fork with with! each each-in-list call-with-output + show fn forked with with! each each-in-list call-with-output displayed written written-shared written-simply numeric numeric/comma numeric/si numeric/fitted nothing nl fl space-to tab-to escaped maybe-escaped