diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2025-01-30 19:27:46 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2025-01-30 19:27:46 -0800 |
commit | 7037ccbafe1b1a5540a50440e203d4298b8b2777 (patch) | |
tree | c538b88d49c53ec18a18a3a5d13524f0a98ef51a /stdlib | |
parent | 89589c71c1eaa51a9f2d1c75b12ae47668ffc662 (diff) | |
download | txr-7037ccbafe1b1a5540a50440e203d4298b8b2777.tar.gz txr-7037ccbafe1b1a5540a50440e203d4298b8b2777.tar.bz2 txr-7037ccbafe1b1a5540a50440e203d4298b8b2777.zip |
awk: add CSV support.
* stdlib/awk (awk-state upd-rec-to-f): Handle a new case
of fs being the keyword symbol :csv, producing a
field-splitting lambda that calls get-csv.
* tests/015/awk-basic.tl: Several new test cases for
this CSV feature.
* txr.1: Documented.
Diffstat (limited to 'stdlib')
-rw-r--r-- | stdlib/awk.tl | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/stdlib/awk.tl b/stdlib/awk.tl index 50121736..35bd436e 100644 --- a/stdlib/awk.tl +++ b/stdlib/awk.tl @@ -95,6 +95,14 @@ (if (< end l) (add [self.rec end..:]))) self.nf i)))) + ((eq self.fs :csv) + (when self.ft + (awk-error "both fs and ft set")) + (when self.kfs + (awk-error "fs set to :csv and ft set")) + (lambda (self) + (set self.fields (get-csv self.rec) + self.nf (length self.fields)))) (self.fs (when self.ft (awk-error "both fs and ft set")) |