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 FlushRuneChunk(RuneChunkDecoder, func(rune) error) error
pkg textutil, func NewUTF8WrapWriter(io.Writer, int) *WrapWriter
pkg textutil, func NewWrapWriter(io.Writer, int, RuneChunkDecoder, RuneEncoder) *WrapWriter
pkg textutil, func PrefixLineWriter(io.Writer, string) WriteFlusher
pkg textutil, func PrefixWriter(io.Writer, string) io.Writer
pkg textutil, func TerminalSize() (int, int, error)
pkg textutil, func WriteRuneChunk(RuneChunkDecoder, func(rune) error, []byte) (int, error)
pkg textutil, method (*UTF8ChunkDecoder) DecodeRune([]byte) (rune, int)
pkg textutil, method (*UTF8ChunkDecoder) FlushRune() rune
pkg textutil, method (*WrapWriter) Flush() error
pkg textutil, method (*WrapWriter) ForceVerbatim(bool) error
pkg textutil, method (*WrapWriter) SetIndents(...string) error
pkg textutil, method (*WrapWriter) SetLineTerminator(string) error
pkg textutil, method (*WrapWriter) SetParagraphSeparator(string) error
pkg textutil, method (*WrapWriter) Width() int
pkg textutil, method (*WrapWriter) Write([]byte) (int, error)
pkg textutil, method (UTF8Encoder) Encode(rune, *bytes.Buffer)
pkg textutil, type RuneChunkDecoder interface { DecodeRune, FlushRune }
pkg textutil, type RuneChunkDecoder interface, DecodeRune([]byte) (rune, int)
pkg textutil, type RuneChunkDecoder interface, FlushRune() rune
pkg textutil, type RuneEncoder interface { Encode }
pkg textutil, type RuneEncoder interface, Encode(rune, *bytes.Buffer)
pkg textutil, type UTF8ChunkDecoder struct
pkg textutil, type UTF8Encoder struct
pkg textutil, type WrapWriter struct
pkg textutil, type WriteFlusher interface { Flush, Write }
pkg textutil, type WriteFlusher interface, Flush() error
pkg textutil, type WriteFlusher interface, Write([]byte) (int, error)
