Add simple-format.
authorJan Nieuwenhuizen <janneke@gnu.org>
Wed, 28 Dec 2016 07:55:34 +0000 (08:55 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Wed, 4 Jan 2017 07:49:51 +0000 (08:49 +0100)
* module/mes/display.mes (simple-format, format): New functions.

module/mes/display.mes

index 1792166bb4a9de0f764b82b6e433f1cb512e84e8..681dc026833a8b63855b42ac01d0db9cac1b19a7 100644 (file)
     (let ((r (apply string stdout)))
       (set! write-byte save-write-byte)
       r)))
     (let ((r (apply string stdout)))
       (set! write-byte save-write-byte)
       r)))
+
+(define (simple-format destination format . rest)
+  (let ((port (if (boolean? destination) (current-output-port) destination))
+        (lst (string->list format)))
+    (define (simple-format lst args)
+      (if (pair? lst)
+          (let ((c (car lst)))
+            (if (not (eq? c #\~)) (begin (write-char (car lst) port)
+                                         (simple-format (cdr lst) args))
+                (let ((c (cadr lst)))
+                  (case c
+                    ((#\a) (display (car args) port))
+                    ((#\s) (write (car args) port)))
+                  (simple-format (cddr lst) (cdr args)))))))
+    
+    (if destination (simple-format lst rest)
+        (with-output-to-string
+          (lambda () (simple-format lst rest))))))
+(define format simple-format)