aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--logo.txt26
-rw-r--r--senzill.asd5
-rw-r--r--src/io.lisp19
-rw-r--r--src/packages.lisp6
4 files changed, 54 insertions, 2 deletions
diff --git a/logo.txt b/logo.txt
new file mode 100644
index 0000000..a0a7d80
--- /dev/null
+++ b/logo.txt
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+ _______
+ / `\ \___
+ / ` `\ \____
+ | ` `-. \_____
+ \ ` ` `-. ` \_____
+ \ ` ` `--. ` \____
+ \ ` ``--. ` \____
+ \ ` ` `--. ` \___
+ \ ` ` `--.` ` \__
+ \_ ` ` ` `--. ` ` \_
+ \_ ` ` ` `--. ` \__
+ \_ ` ` ` ` `---. \___
+ \___ ` ` ` ``--. \
+ \___ ` ` ` ` ` `------/
+ \____ ` ` ` ` ____/
+ \__________ ___________/
+ \__/
diff --git a/senzill.asd b/senzill.asd
index d521aff..fe20cd1 100644
--- a/senzill.asd
+++ b/senzill.asd
@@ -2,7 +2,7 @@
:author "Kamen Mladenov <kamen@syndamia.com>"
:maintainer "Kamen Mladenov <kamen@syndamia.com>"
:license "GNU GPLv3"
- :version "0.1"
+ :version "0.2"
:homepage "https://gitlab.com/Syndamia/senzill"
:bug-tracker "https://gitlab.com/Syndamia/senzill/-/issues"
:source-control (:git "git@gitlab.com:Syndamia/senzill.git")
@@ -10,4 +10,5 @@
:components
((:file "packages")
(:file "math" :depends-on ("packages"))
- (:file "collections" :depends-on ("packages"))))))
+ (:file "collections" :depends-on ("packages"))
+ (:file "io" :depends-on ("packages"))))))
diff --git a/src/io.lisp b/src/io.lisp
new file mode 100644
index 0000000..85e9b31
--- /dev/null
+++ b/src/io.lisp
@@ -0,0 +1,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))))
diff --git a/src/packages.lisp b/src/packages.lisp
index 441101d..802ec3a 100644
--- a/src/packages.lisp
+++ b/src/packages.lisp
@@ -19,3 +19,9 @@
:pop-back
:slice)
(:documentation "List functions"))
+
+(defpackage senzill.io
+ (:use :cl)
+ (:export :doread-lines
+ :ask-for-stream)
+ (:documentation "I/O functions"))