Commits

Moritz Heidkamp  committed dca091c

implement flush-channel-to-output-port as the inverse of siphon-input-channel

  • Participants
  • Parent commits 406c418

Comments (0)

Files changed (2)

 (make-channel
  ;; derivators
  fork-channel fold-channel map-channel filter-channel
- siphon-channel siphon-input-port
+ siphon-channel siphon-input-port flush-channel-to-output-port
 
  ;; operations
  channel-enqueue channel-receive channel-receive/delay
                    (channel-enqueue channel message))))
           channel))
 
+(define (flush-channel-to-output-port channel port write)
+  (on-channel-receive
+   channel
+   (lambda (message)
+     (write message port))))
+
 )

File tests/run.scm

 
   (test '(this is a test) (channel-messages channel)))
 
+(test-group "flush-channel-to-output-port"
+  (define port (open-output-string))
+  (define channel (make-channel 'foo 'bar))
+  (flush-channel-to-output-port channel port write)
+  (test "foobar" (get-output-string port))
+  (channel-enqueue channel 'baz)
+  (test "foobarbaz" (get-output-string port)))
+
 (test-end)
 
 (test-exit)