Duck util-stdout.

This commit is contained in:
Dominik Pantůček 2023-07-05 21:52:43 +02:00
parent 323293be0e
commit b027d19f49
5 changed files with 57 additions and 33 deletions

View file

@ -183,3 +183,38 @@ Executes given command ```cmd``` with given argument list ```args```
writing all ```lines``` to its standard input and then reads all the
process output.
## util-stdout [module]
(import util-stdout)
Very simple module wrapping standard output.
### *stdout-quiet* [parameter]
(define *stdout-quiet* (make-parameter #f))
(*stdout-quiet*)
(*stdout-quiet* quiet)
A boolean parameter which disables all output from procedures in this
module if its value is ```#t```.
### stdout-print [procedure]
(stdout-print . args)
If not quiet, passes ```args``` to ```print```.
### stdout-printf [procedure]
(stdout-printf fmt
. args)
If not quiet, prints formatted string ```fmt``` by applying ```args```
to ```format``` procedure.
### stdout-newline [procedure]
(stdout-newline)
If not quiet, calls ```(newline)```.

View file

@ -353,30 +353,6 @@ Returns a new lset instance from ```ls1``` with all elements in
Returns true if the sets contain exactly the same values.
### Stdout
(import util-stdout)
Very simple module wrapping standard output.
(*stdout-quiet* [quiet])
A boolean parameter which disables all output from procedures in this
module if its value is ```#t```.
(stdout-print . args)
If not quiet, passes ```args``` to ```print```.
(stdout-printf fmt . args)
If not quiet, prints formatted string ```fmt``` by applying ```args```
to ```format``` procedure.
(stdout-newline)
If not quiet, calls ```(newline)```.
### String
(import util-string)

View file

@ -59,10 +59,11 @@ HACKERBASE-OBJS=hackerbase.o testing.o listing.o cal-month.o \
GENDOC-SOURCES=gendoc.scm duck-extract.import.scm \
util-time.import.scm util-csv.import.scm util-git.import.scm \
util-io.import.scm
util-io.import.scm util-stdout.import.scm
GENDOC-OBJS=gendoc.o duck-extract.o util-time.o util-csv.o util-io.o \
progress.o testing.o util-proc.o util-git.o util-io.o
progress.o testing.o util-proc.o util-git.o util-io.o \
util-stdout.o
.PHONY: imports
imports: $(HACKERBASE-DEPS)
@ -386,7 +387,7 @@ CAL-DAY-SOURCES=cal-day.scm util-tag.import.scm cal-month.import.scm \
cal-day.o: cal-day.import.scm
cal-day.import.scm: $(CAL-DAY-SOURCES)
UTIL-STDOUT-SOURCES=util-stdout.scm
UTIL-STDOUT-SOURCES=util-stdout.scm duck.import.scm
util-stdout.o: util-stdout.import.scm
util-stdout.import.scm: $(UTIL-STDOUT-SOURCES)

View file

@ -23,4 +23,5 @@
util-time
util-csv
util-git
util-io)
util-io
util-stdout)

View file

@ -25,8 +25,11 @@
(declare (unit util-stdout))
(module
(import duck)
(module*
util-stdout
#:doc ("Very simple module wrapping standard output.")
(
*stdout-quiet*
stdout-print
@ -39,20 +42,28 @@
(chicken format))
;; If true, all stdout output is suppresed
(define *stdout-quiet* (make-parameter #f))
(define/doc *stdout-quiet*
("A boolean parameter which disables all output from procedures in this
module if its value is ```#t```.")
quiet
(make-parameter #f))
;; Prints to stdout if not quiet
(define (stdout-print . args)
(define/doc (stdout-print . args)
("If not quiet, passes ```args``` to ```print```.")
(when (not (*stdout-quiet*))
(apply print args)))
;; Prints formatted string to stdout if not quiet
(define (stdout-printf fmt . args)
(define/doc (stdout-printf fmt . args)
("If not quiet, prints formatted string ```fmt``` by applying ```args```
to ```format``` procedure.")
(when (not (*stdout-quiet*))
(print (apply format fmt args))))
;; Prints newline if not quiet
(define (stdout-newline)
(define/doc (stdout-newline)
("If not quiet, calls ```(newline)```.")
(when (not (*stdout-quiet*))
(newline)))