summaryrefslogtreecommitdiffstats
path: root/tests/015
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2025-01-30 19:27:46 -0800
committerKaz Kylheku <kaz@kylheku.com>2025-01-30 19:27:46 -0800
commit7037ccbafe1b1a5540a50440e203d4298b8b2777 (patch)
treec538b88d49c53ec18a18a3a5d13524f0a98ef51a /tests/015
parent89589c71c1eaa51a9f2d1c75b12ae47668ffc662 (diff)
downloadtxr-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 'tests/015')
-rw-r--r--tests/015/awk-basic.tl18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/015/awk-basic.tl b/tests/015/awk-basic.tl
index a411d495..caf6087f 100644
--- a/tests/015/awk-basic.tl
+++ b/tests/015/awk-basic.tl
@@ -39,3 +39,21 @@
(t (set f f)
(prn)))
"one,two,three\nfour,five,six\nseven,eight,nine,ten\n")
+
+(defvarl *d1* "a,b,c\r\n\r\nd,e,f\r\ng,h,i")
+
+(motest
+ (awk (:inputs (make-string-input-stream *d1*))
+ (:set fs :csv)
+ (t (prn nf)))
+ "3\n1\n3\n3\n"
+ (awk (:inputs (make-string-input-stream *d1*))
+ (:set fs :csv ofs "|")
+ (t (set f f)
+ (prn)))
+ "a|b|c\r\n\r\nd|e|f\r\ng|h|i\n"
+ (awk (:inputs (make-string-input-stream *d1*))
+ (:set fs :csv rs "\r\n" ofs "|")
+ (t (set f f)
+ (prn)))
+ "a|b|c\n\nd|e|f\ng|h|i\n")