23 lines
624 B
Scheme
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)))
|