[PATCH v1] rdelim: Add new procedure `for-line-in-file`.

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

* module/ice-9/rdelim.scm (for-line-in-file): Add it.

This procedure makes it convenient to do per-line processing of a text
file.
---
 module/ice-9/rdelim.scm | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/module/ice-9/rdelim.scm b/module/ice-9/rdelim.scm
index d2cd081d7..833639219 100644
--- a/module/ice-9/rdelim.scm
+++ b/module/ice-9/rdelim.scm
@@ -23,7 +23,8 @@
 ;;; similar to (scsh rdelim) but somewhat incompatible.
 
 (define-module (ice-9 rdelim)
-  #:export (read-line
+  #:export (for-line-in-file
+            read-line
             read-line!
             read-delimited
             read-delimited!
@@ -206,3 +207,12 @@ characters to read.  By default, there is no limit."
 	      line)
       (else
        (error "unexpected handle-delim value: " handle-delim)))))
+
+(define (for-line-in-file file proc)
+  "Call PROC for every line in FILE until the eof-object is reached.
+The line provided to PROC is guaranteed to be a string."
+  (while #t
+    (let ((line (read-line file)))
+      (if (string? line)
+          (proc 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.