@nkisi/codec v1.0.0-dev.20210630
Nkisi Codec Library
The Nkisi Codec library implements an incremental I/O engine, providing:
- functional parsers and writers
- display, debug, and diagnostic formatters
- Unicode and binary codecs
Overview
Inputs and Outputs
An Input reader abstracts over a non-blocking token input stream, with single
token lookahead. An Output writer abstracts over a non-blocking token output
stream.
Parsers and Writers
A Parser incrementally reads from a sequence of Input chunks to produce a
parsed result. A Writer incrementally writes to a sequence of Output
chunks.
Binary codecs
The Binary factory has methods to create Input readers that read bytes out
of byte buffers, and methods to create Output writers that write bytes into
byte buffers.
Text codecs
The Unicode factory has methods to create Input readers that read Unicode
code points out of strings, and methods to create Output writers that write
Unicode code points into strings.
The Utf8 factory has methods to create Input readers that decode Unicode
code points out of UTF-8 encoded byte buffers, and methods to create Output
writers that encode Unicode code points into UTF-8 encoded byte buffers.
Binary formats
The Base10 factory has methods to create Parsers that incrementally parse
decimal formatted integers, and methods to create Writers that incrementally
write decimal formatted integers.
The Base16 factory has methods to create Parsers that incrementally decode
hexadecimal encoded text input into byte buffers, and methods to create
Writers that incrementally encode byte buffers to hexadecimal encoded text
output.
The Base64 factory has methods to create Parsers that incrementally decode
base-64 encoded text input into byte buffers, and methods to create Writers
that incrementally encode byte buffers to base-64 encoded text output.
Formatters
The Display interface provides a standard way for implementing classes to
directly output human readable display strings. Similarly, the Debug
interface provides a standard way for implementing classes to directly output
developer readable debug strings.
Format provides extension methods to output display and debug strings for all
types, including builtin JavaScript types. OutputStyle provides helper
functions to conditionally emit ASCII escape codes to stylize text for console
output.
Diagnostics
A Tag abstracts over a source input location. A Mark describes a source
input position, and a Span describes a source input range. A Diagnostic
attaches an informational message to a source input location, and supports
displaying the diagnostic as an annotated snippet of the relevant source input.
4 years ago