File: stringports.scm

package info (click to toggle)
sisc 1.16.6-1.3
  • links: PTS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 8,492 kB
  • sloc: lisp: 69,834; xml: 19,482; java: 17,841; sh: 125; makefile: 56
file content (27 lines) | stat: -rw-r--r-- 850 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
(define (open-output-string)
  (let ([port
         ((make-custom-character-output-port
           (lambda args
             (list #f #f
              (lambda (c)
                (set-annotation! port 'string
                                 (string-append (annotation port 'string) 
                                                (make-string c))))
              (lambda (string offset length)
                   (set-annotation! port 'string
                                    (string-append (annotation port 'string)
                                                   (substring str offset length))))
              void
              void))))])
    (set-annotation! port 'string "")
    port))

(define (get-output-string port)
  (let ([str (annotation port 'string)])
    (set-annotation! port 'string "")
    str))