pkg textutil, const EOF rune
pkg textutil, const LineSeparator ideal-char
pkg textutil, const ParagraphSeparator ideal-char
pkg textutil, func ByteReplaceWriter(io.Writer, byte, string) io.Writer
pkg textutil, func NewLineWriter(io.Writer, int, RuneChunkDecoder, RuneEncoder) *LineWriter
pkg textutil, func NewUTF8LineWriter(io.Writer, int) *LineWriter
pkg textutil, func PrefixWriter(io.Writer, string) io.Writer
pkg textutil, func RuneChunkFlush(RuneChunkDecoder, func(rune) error) error
pkg textutil, func RuneChunkWrite(RuneChunkDecoder, func(rune) error, []byte) (int, error)
pkg textutil, func TerminalSize() (int, int, error)
pkg textutil, method (*LineWriter) Flush() error
pkg textutil, method (*LineWriter) SetIndents(...string) error
pkg textutil, method (*LineWriter) SetLineTerminator(string) error
pkg textutil, method (*LineWriter) SetParagraphSeparator(string) error
pkg textutil, method (*LineWriter) Width() int
pkg textutil, method (*LineWriter) Write([]byte) (int, error)
pkg textutil, method (*UTF8ChunkDecoder) Decode([]byte) RuneStreamDecoder
pkg textutil, method (*UTF8ChunkDecoder) DecodeLeftover() RuneStreamDecoder
pkg textutil, method (UTF8Encoder) Encode(rune, *bytes.Buffer)
pkg textutil, type LineWriter struct
pkg textutil, type RuneChunkDecoder interface { Decode, DecodeLeftover }
pkg textutil, type RuneChunkDecoder interface, Decode([]byte) RuneStreamDecoder
pkg textutil, type RuneChunkDecoder interface, DecodeLeftover() RuneStreamDecoder
pkg textutil, type RuneEncoder interface { Encode }
pkg textutil, type RuneEncoder interface, Encode(rune, *bytes.Buffer)
pkg textutil, type RuneStreamDecoder interface { BytePos, Next }
pkg textutil, type RuneStreamDecoder interface, BytePos() int
pkg textutil, type RuneStreamDecoder interface, Next() rune
pkg textutil, type UTF8ChunkDecoder struct
pkg textutil, type UTF8Encoder struct
