tce-conf-1.3: Very simple config file reading

Safe HaskellSafe



Read a serialized (as in the Read typeclass) config data structure from a string

This is handy for the case where you need a strongly-typed, possibly hierarchical configuration. It's not a revolutionary idea to use Read deserialization of a text file but I found it useful to support comments and also wrapping possible failure in Either.


    import TCE.Data.ReadConf ( readConfig )
    -- Write your own custom data structure for config, like this:
    data Config = Config
       { foo :: String
       , bar :: Int
       , baz :: [String]
       , qux :: Bool
       deriving Read  -- Make it an instance of Read
    main = do
       -- Parse a String containing a single instance of the above data type
       econf <- readConfig <$> readFile "read-example.conf"
       -- The result is an Either String Config
          print  -- Failure is reported as a Left
          (\c -> (print $ bar c) >> (print $ qux c))

And then file.conf could contain this Haskell source code:

    -- An example config file
       { foo = "some data"
       --, bar = 0
       , bar = 42
       , baz =
          [ "dogs"
          , "cats"
       , qux = True



readConfig :: Read r => String -> Either String r Source #

Attempt to read a String into an instance of a data structure.