conf-0.1.1.0: src/Data/Conf/Parser.hs
module Data.Conf.Parser (Conf, parseConf) where
import Data.Maybe
import Language.Haskell.Parser
import Language.Haskell.Pretty
import Language.Haskell.Syntax
type Conf = [(String, String)]
getModule :: ParseResult HsModule -> Maybe HsModule
getModule (ParseOk x) = Just x
getModule _ = Nothing
getDecls :: HsModule -> [HsDecl]
getDecls (HsModule _ _ _ _ ds) = ds
getPair :: HsDecl -> Maybe (String, HsExp)
getPair (HsPatBind _ (HsPVar (HsIdent name)) (HsUnGuardedRhs value) _) = Just (name, value)
getPair _ = Nothing
parseDecls :: String -> [HsDecl]
parseDecls s = maybe [] getDecls $ getModule $ parseModule s
parseConf :: String -> Conf
parseConf s = map (fmap prettyPrint) $ mapMaybe getPair $ parseDecls s