blob: 85e9b31fb574820c5772a8ffca2b075b4c242e6d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
(in-package :senzill.io)
(defmacro doread-lines ((var &key (ends '("end")) read-line-options) &rest body)
"Reads lines until NIL or input is inside ends. Each line is stored in var."
`(let ((,var (read-line ,@read-line-options)))
(loop until (or (member ,var ',ends :test 'string=) (not ,var)) do
,@body
(setf ,var (read-line ,@read-line-options)))))
(defmacro ask-for-stream ((var) &rest body)
"var is either *standard-input* or file stream, where the file stream is handled by with-open-stream"
`(let ((filename))
(format t "File name (nothing for *standard-input*): ")
(force-output)
(setf filename (read-line))
(if (string= filename "")
(let ((,var *standard-input*))
,@body)
(with-open-stream (,var (open filename)) ,@body))))
|