1616module Main where
1717
1818import Control.Applicative
19- import Control.Monad.Writer
2019import Control.Arrow (first , second )
2120import Control.Category ((>>>) )
21+ import Control.Monad.Writer
22+ import Data.Function (on )
2223import Data.List
2324import Data.Maybe (fromMaybe )
25+ import Data.Tuple (swap )
2426import Data.Version (showVersion )
2527
2628import Options.Applicative
@@ -75,7 +77,7 @@ docgen (PSCDocsOptions fmt input output) =
7577 Left (D. DesugarError err) -> do
7678 hPutStrLn stderr $ P. prettyPrintMultipleErrors False err
7779 exitFailure
78- Right ms' -> do
80+ Right ms' ->
7981 case output of
8082 EverythingToStdOut ->
8183 putStrLn (D. renderModulesAsMarkdown ms')
@@ -86,9 +88,11 @@ docgen (PSCDocsOptions fmt input output) =
8688 ToFiles names -> do
8789 let (ms, missing) = takeModulesByName' ms' names
8890 guardMissing missing
89- forM_ ms $ \ (m, fp) -> do
91+ let ms'' = groupBy ((==) `on` fst ) . sortBy (compare `on` fst ) $ map swap ms
92+ forM_ ms'' $ \ grp -> do
93+ let fp = fst (head grp)
9094 createDirectoryIfMissing True (takeDirectory fp)
91- writeFile fp (D. renderModulesAsMarkdown [m] )
95+ writeFile fp (D. renderModulesAsMarkdown $ snd `map` grp )
9296
9397 where
9498 guardMissing [] = return ()
0 commit comments