summaryrefslogtreecommitdiffstats
path: root/share/txr
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2016-09-24 07:56:27 -0700
committerKaz Kylheku <kaz@kylheku.com>2016-09-24 07:56:27 -0700
commit377a5875a09abed9ee7a64237f666d838f8bbd01 (patch)
treed576c973f5faf4c3ef9f6efa5e635fa183998b3a /share/txr
parenta366b6a58bb18d1dec861978a0898a439461de2f (diff)
downloadtxr-377a5875a09abed9ee7a64237f666d838f8bbd01.tar.gz
txr-377a5875a09abed9ee7a64237f666d838f8bbd01.tar.bz2
txr-377a5875a09abed9ee7a64237f666d838f8bbd01.zip
awk macro: add orec variable.
* share/txr/stdlib/awk.tl (sys:awk-state): New slot, orig-rec. (sys:awk-state loop): Initialize orig-rec after reading each record. (sys:awk-let): Provide orec symbol macro. * txr.1: Document orec variable.
Diffstat (limited to 'share/txr')
-rw-r--r--share/txr/stdlib/awk.tl6
1 files changed, 4 insertions, 2 deletions
diff --git a/share/txr/stdlib/awk.tl b/share/txr/stdlib/awk.tl
index 466ab544..eb07cdcc 100644
--- a/share/txr/stdlib/awk.tl
+++ b/share/txr/stdlib/awk.tl
@@ -35,7 +35,8 @@
(file-num 0)
(file-rec-num 0)
(rec-num 0)
- rec fields nf rng-vec (rng-n 0)
+ rec orig-rec fields nf
+ rng-vec (rng-n 0)
(:postinit (self)
(if (plusp self.rng-n)
(set self.rng-vec (vector self.rng-n)))
@@ -93,7 +94,7 @@
aws.krs))))
(set aws.file-rec-num 0)
(whilet ((rec (get-line recin)))
- (set aws.rec rec)
+ (set aws.rec rec aws.orig-rec rec)
(inc aws.rec-num)
(inc aws.file-rec-num)
aws.(rec-to-f)
@@ -167,6 +168,7 @@
(defmacro sys:awk-let (awc aws-sym . body)
^(symacrolet ((rec (rslot ,aws-sym 'rec 'rec-to-f))
+ (orec (rslot ,aws-sym 'orig-rec 'rec-to-f))
(f (rslot ,aws-sym 'fields 'f-to-rec))
(nf (rslot ,aws-sym 'nf 'nf-to-f))
(nr (qref ,aws-sym rec-num))