diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-09-24 07:56:27 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-09-24 07:56:27 -0700 |
commit | 377a5875a09abed9ee7a64237f666d838f8bbd01 (patch) | |
tree | d576c973f5faf4c3ef9f6efa5e635fa183998b3a /share | |
parent | a366b6a58bb18d1dec861978a0898a439461de2f (diff) | |
download | txr-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')
-rw-r--r-- | share/txr/stdlib/awk.tl | 6 |
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)) |