summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2016-09-12 06:31:50 -0700
committerKaz Kylheku <kaz@kylheku.com>2016-09-12 06:31:50 -0700
commitb2ef30979b89bc0e8fa5f90b8bfc7d09ed3e16c2 (patch)
treeee4ef132ba308778039784d494a7a4e2172e7cbc /share
parent000220fca51ff45aeb979ad766667fb3667f0b05 (diff)
downloadtxr-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.tl7
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)))