summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2010-06-18 19:27:52 +0200
committerAndy Wingo <wingo@pobox.com>2010-06-18 19:27:52 +0200
commitc399333044640cc2919aa535784cfa3a26901b95 (patch)
tree1742f49d2b9b45f8bff7f56fd10bb3ea8980cbcb
parent00f79aa4a0953f2f7348aa20f09b34fda257df32 (diff)
downloadguile-c399333044640cc2919aa535784cfa3a26901b95.tar.gz
add open-string-{input,output}-port to rnrs io ports
* module/rnrs/io/ports.scm (open-string-input-port) (open-string-output-port): New procedures. * module/rnrs.scm (rnrs): Export the new (rnrs io ports) procedures.
-rw-r--r--module/rnrs.scm1
-rw-r--r--module/rnrs/io/ports.scm13
2 files changed, 14 insertions, 0 deletions
diff --git a/module/rnrs.scm b/module/rnrs.scm
index 83fad9866..5df53feed 100644
--- a/module/rnrs.scm
+++ b/module/rnrs.scm
@@ -167,6 +167,7 @@
lookahead-u8 get-bytevector-n get-bytevector-n! get-bytevector-some
get-bytevector-all open-bytevector-output-port
make-custom-binary-output-port put-u8 put-bytevector
+ open-string-input-port open-string-output-port
;; (rnrs io simple)
diff --git a/module/rnrs/io/ports.scm b/module/rnrs/io/ports.scm
index 89dc26509..4916bba45 100644
--- a/module/rnrs/io/ports.scm
+++ b/module/rnrs/io/ports.scm
@@ -39,6 +39,7 @@
;; input ports
open-bytevector-input-port
+ open-string-input-port
make-custom-binary-input-port
;; binary input
@@ -48,6 +49,7 @@
;; output ports
open-bytevector-output-port
+ open-string-output-port
make-custom-binary-output-port
;; binary output
@@ -106,4 +108,15 @@ read from/written to in @var{port}."
(lambda ()
(close-port port))))
+(define (open-string-input-port str)
+ "Open an input port that will read from @var{str}."
+ (open-input-string str))
+
+(define (open-string-output-port)
+ "Return two values: an output port that will collect characters written to it
+as a string, and a thunk to retrieve the characters associated with that port."
+ (let ((port (open-output-string)))
+ (values port
+ (lambda () (get-output-string port)))))
+
;;; ports.scm ends here