From b2ef30979b89bc0e8fa5f90b8bfc7d09ed3e16c2 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Mon, 12 Sep 2016 06:31:50 -0700 Subject: awk macro: more Awk-like treatment of prn args. * share/txr/stdlib/awk.tl (sys:awk-state prn): Use loop instead of simple interpolation, so that we we can individually interpolate each arg into a quasistring. This way if an arg is nil, it turns into nothing rather than the word "nil". * txr.1: Documented this behavior of prn. --- share/txr/stdlib/awk.tl | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'share') diff --git a/share/txr/stdlib/awk.tl b/share/txr/stdlib/awk.tl index bb1dec1e..77d47703 100644 --- a/share/txr/stdlib/awk.tl +++ b/share/txr/stdlib/awk.tl @@ -99,7 +99,12 @@ [end-file-func aws]))))) (defmeth sys:awk-state prn (self . args) - (put-string `@{(if args args self.rec) self.ofs}@{self.ors}`)) + (cond + (args (for ((a args) next) (a) ((set a next)) + (put-string `@(car a)`) + (put-string (if (set next (cdr a)) self.ofs self.ors)))) + (t (put-string self.rec) + (put-string self.ors)))) (defun sys:awk-expander (clauses) (let ((awc (new sys:awk-compile-time))) -- cgit v1.2.3