diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-09-12 06:31:50 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-09-12 06:31:50 -0700 |
commit | b2ef30979b89bc0e8fa5f90b8bfc7d09ed3e16c2 (patch) | |
tree | ee4ef132ba308778039784d494a7a4e2172e7cbc /share | |
parent | 000220fca51ff45aeb979ad766667fb3667f0b05 (diff) | |
download | txr-b2ef30979b89bc0e8fa5f90b8bfc7d09ed3e16c2.tar.gz txr-b2ef30979b89bc0e8fa5f90b8bfc7d09ed3e16c2.tar.bz2 txr-b2ef30979b89bc0e8fa5f90b8bfc7d09ed3e16c2.zip |
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.
Diffstat (limited to 'share')
-rw-r--r-- | share/txr/stdlib/awk.tl | 7 |
1 files changed, 6 insertions, 1 deletions
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))) |