Artifact
01c4e9d7b7656ff05f782ed2ac3bfa923c4ffd34:
- File
fmt/read-line.scm
— part of check-in
[ecd5997790]
at
2016-07-23 07:46:20
on branch trunk
— cairo improvements, added some tests
(user:
ovenpasta@pizzahack.eu
size: 310)
0000: 0a 28 64 65 66 69 6e 65 20 28 72 65 61 64 2d 6c .(define (read-l
0010: 69 6e 65 20 2e 20 6f 29 0a 20 20 28 6c 65 74 20 ine . o). (let
0020: 28 28 70 6f 72 74 20 28 69 66 20 28 70 61 69 72 ((port (if (pair
0030: 3f 20 6f 29 20 28 63 61 72 20 6f 29 20 28 63 75 ? o) (car o) (cu
0040: 72 72 65 6e 74 2d 69 6e 70 75 74 2d 70 6f 72 74 rrent-input-port
0050: 29 29 29 29 0a 20 20 20 20 28 6c 65 74 20 6c 70 )))). (let lp
0060: 20 28 28 72 65 73 20 27 28 29 29 29 0a 20 20 20 ((res '())).
0070: 20 20 20 28 6c 65 74 20 28 28 63 20 28 72 65 61 (let ((c (rea
0080: 64 2d 63 68 61 72 20 70 6f 72 74 29 29 29 0a 20 d-char port))).
0090: 20 20 20 20 20 20 20 28 63 6f 6e 64 20 0a 09 20 (cond ..
00a0: 5b 28 61 6e 64 20 28 65 6f 66 2d 6f 62 6a 65 63 [(and (eof-objec
00b0: 74 3f 20 63 29 20 28 6e 75 6c 6c 3f 20 72 65 73 t? c) (null? res
00c0: 29 29 20 23 66 5d 0a 09 20 5b 28 6f 72 20 28 65 )) #f].. [(or (e
00d0: 6f 66 2d 6f 62 6a 65 63 74 3f 20 63 29 20 28 65 of-object? c) (e
00e0: 71 76 3f 20 63 20 23 5c 6e 65 77 6c 69 6e 65 29 qv? c #\newline)
00f0: 29 0a 09 20 20 28 6c 69 73 74 2d 3e 73 74 72 69 ).. (list->stri
0100: 6e 67 20 28 72 65 76 65 72 73 65 20 72 65 73 29 ng (reverse res)
0110: 29 5d 0a 09 20 5b 65 6c 73 65 0a 09 20 20 28 6c )].. [else.. (l
0120: 70 20 28 63 6f 6e 73 20 63 20 72 65 73 29 29 5d p (cons c res))]
0130: 29 29 29 29 29 0a ))))).