From daf60d254b0f47fcdd2dec4046a4e97476da9eee Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 19 Dec 2023 19:32:28 -0800 Subject: New functions: read-objects, file-get-objects, ... * parser.c (read_objects_common): New static function, formed from read_objects_from-string. (read_objects_from_string): Now wrapper for read_objects_common. (read_objects): New function. * parser.h (read_objects): Declared. * eval.c (eval_init): Register read-objects intrinsic. * autoload.c (getput_set_entries): Add three new symbols: file-get-objects, file-put-objects and file-append-objects. * stdlib/getput.tl (put-objects): New system function. (file-get-objects, file-put-objects, file-append-objects): New functions. * txr.1: Documented. * tests/018/getput.tl: New file. --- tests/018/getput.tl | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 tests/018/getput.tl (limited to 'tests') diff --git a/tests/018/getput.tl b/tests/018/getput.tl new file mode 100644 index 00000000..7e8e2be1 --- /dev/null +++ b/tests/018/getput.tl @@ -0,0 +1,33 @@ +(load "../common") + +(defvarl file "getput.data") + +(push-after-load (remove-path file)) + +(file-put-objects file '(1 2.3 (a . b) "foo")) + +(test + (file-get-lines file) ("1" "2.3" "(a . b)" "\"foo\"")) + +(file-append-objects file '(#(nil))) + +(mtest + (file-get-lines file) ("1" "2.3" "(a . b)" "\"foo\"" "#(nil)") + (file-get-objects file) (1 2.3 (a . b) "foo" #(nil))) + +(mtest + (read-objects "(a . b) #\\c") ((a . b) #\c) + (read-objects "(a") :error) + +(file-put-string file "(a") + +(mtest + (file-get file) :error + (file-get-objects file) :error) + +(let ((errors (with-out-string-stream (err) + (ignerr (file-get-objects file : err))))) + (mtest + (true (contains "syntax error" errors)) t + (true (contains "unterminated" errors)) t + (true (contains ":1" errors)) t)) -- cgit v1.2.3