sunfishcode / basic-text
Basic Text strings and I/O streams
README
This repository hosts a project to define a text format called Basic Text, a
subset of Unicode that focuses on text: it excludes unprintable control
characters, characters which depend on out-of-band information to interpret,
non-characters, deprecated characters, and more, while aiming to preserve
everything of practical use to plain text and formats built on top of it. See
the Book for more information.
It also includes a Rust crate which aims to implement the Basic Text format,
providing several utilities:
-
TextStringandTextStrare similar to the standard library's
Stringandstr, but use the Basic Text string format, along with a
text!("...")macro for Basic Text string literals. -
TextReaderandTextWriterare input and output streams which use the
Basic Text stream format. On input, content is converted in a way which is
lossy with respect to the original bytestream. Output uses the "strict"
conversion method, in which invalid content is diagnosed with errors. -
BufReadText, an extension trait that addstext_linesand
text_lines_lossytoBufReadimplementations for reading lines
from an input stream asBasicTextstrings. -
TextDuplexeris aDuplexfor reading and writing on an interactive
stream using Basic Text.
The code here is usable, and implements everything in the Basic Text spec,
but is not very mature or optimized yet.
