guile-uniseg/uniseg/graphemes/stream.scm

23 lines
624 B
Scheme

(define-module (runewidth graphemes stream)
#:use-module (srfi srfi-41)
#:use-module (srfi srfi-9 gnu)
#:export (make-grapheme
input->grapheme-stream))
(define-immutable-record-type <grapheme>
(make-grapheme glyphs width sentence-end? word-end?)
grapheme?
(glyphs grapheme-glyphs)
(width grapheme-width)
(sentence-end? grapheme-sentence-end?)
(word-end? grapheme-word-end?))
(define-stream (input->grapheme-stream port)
(unless port
(set! port (current-input-port)))
(define gr (make-grapheme glyphs width sentence-end? word-end?))
(stream-cons c (input->grapheme-stream port)))