Line-format guides
Recipe-style walk-throughs for the Bodu line formats - Bodu.Text.Delimited, Bodu.Text.DotEnv, and Bodu.Text.Ini (available together through the Bodu.Text.Formats umbrella package).
If you are new to the family, start with the introduction, the Core concepts glossary, and the getting-started page. The guides below assume you know the quartet vocabulary (token reader/writer, serializer, mutable node DOM, read-only document DOM).
How the libraries work
Each format is a self-contained System.Text.Json-shaped library: a forward-only Utf8*Reader / Utf8*Writer pair over UTF-8 bytes, a *Serializer that binds POCOs and dictionaries with the shared attribute/naming-policy/callback layer, a mutable *Node DOM for authoring, and a disposable read-only *Document DOM for querying.
The serializer infrastructure (attributes, naming policies, callbacks) is shared with the TOML, Bencode, and YAML libraries - see the Bodu serializer guides.
Namespace map
| Namespace | What lives here | Guides |
|---|---|---|
| Bodu.Text.Delimited | DelimitedSerializer, the dialect-policy enums, and the exceptions; readers/writers and DOMs in the .Reader / .Writer / .Nodes / .Document child namespaces. |
Using delimited |
| Bodu.Text.DotEnv | DotEnvSerializer and companions, with the same child-namespace layout. |
Using DotEnv |
| Bodu.Text.Ini | IniSerializer, the duplicate-policy enums, and companions; the two readers live in Bodu.Text.Ini.Reader. |
Using INI |
Guides
- Choosing a text format - which format fits which job, round-trip fidelity, error recovery.
- Using delimited (CSV / TSV) - documents, typed records, dialect policies, CSV↔TSV conversion.
- Using DotEnv - literal values, quoting, export prefixes, typed settings.
- Using INI - global keys and sections, comment-preserving edits, duplicate policies.
- Streams and token-level I/O - the forward-only readers/writers and the record-streaming serializer surface.
- Errors across the line formats - the
*FormatException/*SerializationExceptionpair per format, what each carries, and which reader policies tolerate dirty input. - Reflection-free binding with the source generator - emit
IDelimitedRecordFactory<TRecord>/IIniSectionFactory<TSection>implementations at build time for trimming- and AOT-safe binding. - Writer options and DOM options - every
*WriterOptions,*NodeOptions, and*DocumentOptionsstruct across the line formats and the serializer DOMs, with the effect of each knob.
Suggested reading path
- Choosing a text format
- The guide for your format
- Streams and token-level I/O for large inputs
- Errors across the line formats before shipping a parser of untrusted files
Where to go next
- The serializer guides for the shared attribute family, naming policies, and callbacks - including Migrating from System.Text.Json and Serializer options: freezing, caching, and thread safety, both of which cover the line formats too.
Bodu.Text.Configurationwhen you need EditorConfig-style layered configuration rather than raw INI.