Safe Haskell | None |
---|---|
Language | Haskell98 |
Clean configuration files in the INI format.
Format rules and recommendations:
- The
:
syntax is space-sensitive. - Keys are case-sensitive.
- Lower-case is recommended.
- Values can be empty.
- Keys cannot key separators, section delimiters, or comment markers.
- Comments must start at the beginning of the line and start with
;
or#
.
An example configuration file:
# Some comment. [SERVER] port=6667 hostname=localhost ; another comment here [AUTH] user: hello pass: world salt:
Parsing example:
>>>
parseIni "[SERVER]\nport: 6667\nhostname: localhost"
Right (Ini {unIni = fromList [("SERVER",fromList [("hostname","localhost"),("port","6667")])]})
Synopsis
- readIniFile :: FilePath -> IO (Either String Ini)
- parseIni :: Text -> Either String Ini
- lookupValue :: Text -> Text -> Ini -> Either String Text
- lookupArray :: Text -> Text -> Ini -> Either String [Text]
- readValue :: Text -> Text -> (Text -> Either String (a, Text)) -> Ini -> Either String a
- readArray :: Text -> Text -> (Text -> Either String (a, Text)) -> Ini -> Either String [a]
- parseValue :: Text -> Text -> Parser a -> Ini -> Either String a
- sections :: Ini -> [Text]
- keys :: Text -> Ini -> Either String [Text]
- printIni :: Ini -> Text
- writeIniFile :: FilePath -> Ini -> IO ()
- data KeySeparator
- data WriteIniSettings = WriteIniSettings {}
- defaultWriteIniSettings :: WriteIniSettings
- printIniWith :: WriteIniSettings -> Ini -> Text
- writeIniFileWith :: WriteIniSettings -> FilePath -> Ini -> IO ()
- data Ini = Ini {
- iniSections :: HashMap Text [(Text, Text)]
- iniGlobals :: [(Text, Text)]
- unIni :: Ini -> HashMap Text (HashMap Text Text)
- iniParser :: Parser Ini
- sectionParser :: Parser (Text, [(Text, Text)])
- keyValueParser :: Parser (Text, Text)
Reading
Lookup one value in the config.
Example:
>>>
parseIni "[SERVER]\nport: 6667\nhostname: localhost" >>= lookupValue "SERVER" "hostname"
Right "localhost"
Lookup one value in the config.
Example:
>>>
parseIni "[SERVER]\nport: 6667\nhostname: localhost" >>= lookupValue "SERVER" "hostname"
Right "localhost"
Read a value using a reader from Data.Text.Read.
Read an array of values using a reader from Data.Text.Read.
Parse a value using a reader from Data.Attoparsec.Text.
sections :: Ini -> [Text] Source #
Get the sections in the config.
Example:
>>>
sections <$> parseIni "[SERVER]\nport: 6667\nhostname: localhost"
Right ["SERVER"]
Get the keys in a section.
Example:
>>>
parseIni "[SERVER]\nport: 6667\nhostname: localhost" >>= keys "SERVER"
Right ["hostname","port"]
Writing
Advanced writing
data KeySeparator Source #
Either :
or =
.
Instances
Eq KeySeparator Source # | |
Defined in Data.Ini (==) :: KeySeparator -> KeySeparator -> Bool Source # (/=) :: KeySeparator -> KeySeparator -> Bool Source # | |
Show KeySeparator Source # | |
data WriteIniSettings Source #
Settings determining how an INI file is written.
defaultWriteIniSettings :: WriteIniSettings Source #
The default settings for writing INI files.
printIniWith :: WriteIniSettings -> Ini -> Text Source #
Print an INI config.
writeIniFileWith :: WriteIniSettings -> FilePath -> Ini -> IO () Source #
Print the INI config to a file.
Types
An INI configuration.
Ini | |
|