mirror of
https://github.com/chrisdone/ini.git
synced 2024-09-11 07:05:32 +03:00
Quick and easy INI configuration files for Haskell
.github/workflows | ||
src/Data | ||
test | ||
.dir-locals.el | ||
.gitignore | ||
ini.cabal | ||
LICENSE | ||
README.md | ||
Setup.hs | ||
stack.yaml |
ini ![Hackage](https://img.shields.io/hackage/v/ini.svg?style=flat)
Quick and easy configuration files in the INI format for Haskell.
Format rules and recommendations:
foo: bar
orfoo=bar
are allowed.- The
:
syntax is space-sensitive. - Keys are case-sensitive.
- Lower-case is recommended.
- Values can be empty.
- Keys cannot contain
:
,=
,[
, or]
. - Comments must start at the beginning of the line with
;
or#
.
An example configuration file:
# Some comment.
[SERVER]
port=6667
hostname=localhost
[AUTH]
user=hello
pass=world
# Salt can be an empty string.
salt=
Parsing example:
> parseIni "[SERVER]\nport: 6667\nhostname: localhost"
Right (Ini {unIni = fromList [("SERVER",fromList [("hostname","localhost")
,("port","6667")])]})
Extracting values:
> parseIni "[SERVER]\nport: 6667\nhostname: localhost" >>=
lookupValue "SERVER" "hostname"
Right "localhost"
Parsing:
> parseIni "[SERVER]\nport: 6667\nhostname: localhost" >>=
readValue "SERVER" "port" decimal
Right 6667
Import Data.Text.Read
to use decimal
.
Related packages
ini-qq
provides a quasiquoter for INI.