INI files ========= **Energy.Base.Ini** provides simple INI file parsing. The main type is **Energy.Base.Ini.IniFile**, a dictionary whose keys are section names and whose values are `Energy.Base.Collection.StringDictionary` objects containing key/value pairs. Features -------- - Configurable section brackets (`[]` by default). - Configurable key/value separators (`=` by default). - Configurable comment characters (`;` by default). - Case-sensitive or case-insensitive key lookup. - Optional empty section name. - Whitespace trimming. - Reading and writing whole files. Example ------- ```csharp string content = @" ; Database settings [Database] Server=localhost Port=3306 Database=test [Logging] Level=Debug File=log.txt "; Energy.Base.Ini.IniFile ini = new Energy.Base.Ini.IniFile(); ini.Parse(content); Console.WriteLine("Server: {0}", ini["Database"]["Server"]); Console.WriteLine("Port: {0}", ini["Database"]["Port"]); // change a value ini["Database"]["Port"] = "3307"; string output = ini.ToString(); Console.WriteLine(output); ``` Loading and saving ------------------ ```csharp Energy.Base.Ini.IniFile ini = new Energy.Base.Ini.IniFile(); ini.Load("settings.ini"); ini.Load("settings.ini", System.Text.Encoding.UTF8); ini["Application"]["Name"] = "MyApp"; System.IO.File.WriteAllText("settings.ini", ini.ToString()); ``` Configuration ------------- | Property | Default | Description | |----------|---------|-------------| | `CaseSensitive` | `true` | Key comparison is case-sensitive. | | `AllowEmptySection` | `true` | Allow entries before the first section. | | `IgnoreWhiteSpace` | `true` | Trim leading and trailing whitespace. | | `CommentCharacters` | `{ ";" }` | Lines starting with these are ignored. | | `KeyValueSeparators` | `{ "=" }` | Strings that separate key and value. | | `SectionBrackets` | `{ "[]" }` | Strings that enclose section names. |