From 7037ccbafe1b1a5540a50440e203d4298b8b2777 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Thu, 30 Jan 2025 19:27:46 -0800 Subject: 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. --- stdlib/awk.tl | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'stdlib') 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")) -- cgit v1.2.3