Inilike is D library for parsing .ini-like files used in Freedesktop systems in various places (.desktop files, icon themes, mimeapps.list, mimeinfo.cache, trashcan files on freedesktop, etc.)
Note: the original purpose of this library is to serve as dependency for my other projects, e.g. desktopfile and icontheme. It may be not suitable to save configuration files using this library. You have been warned.
Freedesktop specifications use the format which is sometimes referred to as .ini-like because it's very similiar to INI used in MS Windows with small differences:
- Comments start with '#', not ';'.
- Each comment is always placed on its own line. Key-value can't be mixed with a comment on the same line.
Example:
# Comment
[Group name]
Key=Value
# Comment inside group
AnotherKey=Value
[Another group]
Key=English value
Key[fr_FR]=Francais value
The localized value is the value associated with the localized key. Localized keys look like this:
keyname[locale]
where locale is the POSIX locale with the charset part dropped.
Inilike library has support for lookup of localized values, using the algorithm described in Desktop Entry Specification.
IniLikeFile is the base class for file of ini-like format. To change its functionality (validation and other behavior) it needs to be subclassed. See example in unittests that shows which functions can be overridden.