diff options
author | David Waern <davve@dtek.chalmers.se> | 2007-10-02 01:05:19 +0000 |
---|---|---|
committer | David Waern <davve@dtek.chalmers.se> | 2007-10-02 01:05:19 +0000 |
commit | fe2f0cc0e8fda4b4cfe6ea64083c91dbfec2cadb (patch) | |
tree | 93a9dd60b44238b0baeceba991870bd30bc56ff6 /src/Haddock/Interface | |
parent | eda2c60c5040c6869d3de3e130e07fd6cca590a4 (diff) |
Improve parsing of doc options
Diffstat (limited to 'src/Haddock/Interface')
-rw-r--r-- | src/Haddock/Interface/Create.hs | 27 |
1 files changed, 6 insertions, 21 deletions
diff --git a/src/Haddock/Interface/Create.hs b/src/Haddock/Interface/Create.hs index 61f2d51c..df952ad8 100644 --- a/src/Haddock/Interface/Create.hs +++ b/src/Haddock/Interface/Create.hs @@ -107,28 +107,13 @@ createInterface ghcMod flags modMap = do mkDocOpts :: Maybe String -> [Flag] -> Module -> ErrMsgM [DocOption] mkDocOpts mbOpts flags mod = do opts <- case mbOpts of - Just opts -> processOptions opts + Just opts -> case words $ replace ',' ' ' opts of + [] -> tell ["No option supplied to DOC_OPTION/doc_option"] >> return [] + xs -> liftM catMaybes (mapM parseOption xs) Nothing -> return [] - let opts' = if Flag_HideModule (moduleString mod) `elem` flags - then OptHide : opts - else opts - return opts' - - -processOptions_ str = let (opts, msg) = runWriter (processOptions str) - in print msg >> return opts - - -processOptions :: String -> ErrMsgM [DocOption] -processOptions str = do - case break (== ',') str of - (this, ',':rest) -> do - opt <- parseOption this - opts <- processOptions rest - return (maybeToList opt ++ opts) - (this, _) - | all isSpace this -> return [] - | otherwise -> do opt <- parseOption this; return (maybeToList opt) + if Flag_HideModule (moduleString mod) `elem` flags + then return $ OptHide : opts + else return opts parseOption :: String -> ErrMsgM (Maybe DocOption) |