rdelim: Add new procedure `for-line-in-file`.

Adam Faiz <[email protected]>
Newsgroups gmane.lisp.guile.devel
Message-ID <[email protected]>
From 18485a2b94595ae2239f5dcdeb06d3a80bb04bf1 Mon Sep 17 00:00:00 2001
From: AwesomeAdam54321 <[email protected]>
Date: Sun, 15 Dec 2024 23:48:30 +0800
Subject: [PATCH] rdelim: Add new procedure `for-line-in-file`.

* module/ice-9/rdelim.scm (for-line-in-file): Add it.
---
 module/ice-9/rdelim.scm | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/module/ice-9/rdelim.scm b/module/ice-9/rdelim.scm
index d2cd081d7..ffa38efad 100644
--- a/module/ice-9/rdelim.scm
+++ b/module/ice-9/rdelim.scm
@@ -206,3 +206,15 @@ characters to read.  By default, there is no limit."
 	      line)
       (else
        (error "unexpected handle-delim value: " handle-delim)))))
+
+;;; for-line-in-file [PORT BODY] calls BODY (a procedure with the
+;;; line from PORT as it's argument) for every line until the
+;;; eof-object is reached. The line provided to BODY is guaranteed
+;;; to be a string.
+
+(define (for-line-in-file file body)
+  (while #t
+    (let ((line (read-line file)))
+      (if (string? line)
+          (body line)
+          (break)))))
-- 
2.41.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.