{-# LANGUAGE OverloadedStrings #-} module Main where import Data.Ini.Config import Data.Text (Text) data Config = Config { confUsername :: Text , confPort :: Int , confUseEncryption :: Bool } deriving (Eq, Show) parseConfig :: IniParser Config parseConfig = section "network" $ do user <- field "user" port <- fieldOf "port" number enc <- fieldFlagDef "encryption" True return (Config user port enc) example :: Text example = "[NETWORK]\n\ \user = gdritter\n\ \port = 8888\n" main :: IO () main = do print (parseIniFile example parseConfig)