summaryrefslogtreecommitdiff
path: root/utils/mkUserGuidePart/Main.hs
diff options
context:
space:
mode:
Diffstat (limited to 'utils/mkUserGuidePart/Main.hs')
-rw-r--r--utils/mkUserGuidePart/Main.hs110
1 files changed, 0 insertions, 110 deletions
diff --git a/utils/mkUserGuidePart/Main.hs b/utils/mkUserGuidePart/Main.hs
deleted file mode 100644
index 99f921c8f4..0000000000
--- a/utils/mkUserGuidePart/Main.hs
+++ /dev/null
@@ -1,110 +0,0 @@
-module Main (main) where
-
-import DynFlags
-import Control.Monad (forM_)
-import Types hiding (flag)
-import Table
-import Options
-
-import System.IO
-
-writeFileUtf8 :: FilePath -> String -> IO ()
-writeFileUtf8 f txt = withFile f WriteMode (\ hdl -> hSetEncoding hdl utf8 >> hPutStr hdl txt)
-
--- | A ReStructuredText fragment
-type ReST = String
-
-main :: IO ()
-main = do
- -- user's guide
- writeRestFile (usersGuideFile "what_glasgow_exts_does.gen.rst")
- $ whatGlasgowExtsDoes
- forM_ groups $ \(Group name _ theFlags) ->
- let fname = usersGuideFile $ "flags-"++name++".gen.rst"
- in writeRestFile fname (flagsTable theFlags)
-
- -- man page
- writeRestFile (usersGuideFile "all-flags.gen.rst") (flagsList groups)
-
-usersGuideFile :: FilePath -> FilePath
-usersGuideFile fname = "docs/users_guide/"++fname
-
-writeRestFile :: FilePath -> ReST -> IO ()
-writeRestFile fname content =
- writeFileUtf8 fname $ unlines
- [ ".. This file is generated by utils/mkUserGuidePart"
- , ""
- , content
- ]
-
-whatGlasgowExtsDoes :: String
-whatGlasgowExtsDoes = unlines
- $ [ ".. hlist::", ""]
- ++ map ((" * "++) . parseExt) glasgowExtsFlags
- where
- parseExt ext = inlineCode $ "-X" ++ show ext
-
--- | Generate a reference table of the given set of flags. This is used in
--- the user's guide.
-flagsTable :: [Flag] -> ReST
-flagsTable theFlags =
- table [60, 100, 30, 55]
- ["Flag", "Description", "Type", "Reverse"]
- (map flagRow theFlags)
- where
- flagRow flag =
- [ role "ghc-flag" (flagName flag)
- , flagDescription flag
- , type_
- , role "ghc-flag" (flagReverse flag)
- ]
- where
- type_ = case flagType flag of
- DynamicFlag -> "dynamic"
- DynamicSettableFlag -> "dynamic/``:set``"
- ModeFlag -> "mode"
-
--- | Place the given text in an ReST inline code element.
-inlineCode :: String -> ReST
-inlineCode s = "``" ++ s ++ "``"
-
--- | @role "hi" "Hello world"@ produces the ReST inline role element
--- @:hi:`Hello world`@.
-role :: String -> String -> ReST
-role _ "" = ""
-role r c = concat [":",r,":`",flag,"`",next]
- where
- -- Handle multiple comma separated flags
- (flag, rest) = span (/= ',') c
- next | rest == "" = rest
- | otherwise = concat [", ", role r $ dropWhile (/= '-') rest]
-
-heading :: Char -> String -> ReST
-heading chr title = unlines
- [ title
- , replicate (length title) chr
- , ""
- ]
-
--- | Generate a listing of all the flags known to GHC.
--- Used in the man page.
-flagsList :: [Group] -> ReST
-flagsList grps = unlines $
- map doGroup grps ++ map flagDescriptions grps
- where
- doGroup grp = unlines
- [ grpTitle grp
- , " " ++ unwords (map (inlineCode . flagName) (grpFlags grp))
- , ""
- ]
-
--- | Generate a definition list of the known flags.
--- Used in the man page.
-flagDescriptions :: Group -> ReST
-flagDescriptions (Group _ title fs) =
- unlines $ [ heading '~' title ] ++ map doFlag fs
- where
- doFlag flag =
- unlines $ [ inlineCode (flagName flag)
- , " " ++ flagDescription flag
- ]