module Language.PureScript.Docs.Convert
( convertModules
, convertModulesInPackage
, collectBookmarks
) where
import Prelude ()
import Prelude.Compat
import Control.Monad.Error.Class (MonadError)
import Control.Arrow ((&&&))
import Control.Category ((>>>))
import qualified Data.Map as Map
import qualified Language.PureScript as P
import Language.PureScript.Docs.Types
import Language.PureScript.Docs.Convert.Single (convertSingleModule, collectBookmarks)
import Language.PureScript.Docs.Convert.ReExports (updateReExports)
convertModulesInPackage ::
(Functor m, MonadError P.MultipleErrors m) =>
P.Env ->
[InPackage P.Module] ->
m [Module]
convertModulesInPackage env modules =
go modules
where
localNames =
map (P.runModuleName . P.getModuleName) (takeLocals modules)
go =
map ignorePackage
>>> convertModules env
>>> fmap (filter ((`elem` localNames) . modName))
convertModules ::
(Functor m, MonadError P.MultipleErrors m) =>
P.Env ->
[P.Module] ->
m [Module]
convertModules env =
P.sortModules >>> fmap (convertSorted env . fst)
convertSorted :: P.Env -> [P.Module] -> [Module]
convertSorted env modules =
let
traversalOrder =
map P.getModuleName modules
moduleMap =
Map.fromList $ map (P.getModuleName &&& convertSingleModule) modules
in
Map.elems (updateReExports env traversalOrder moduleMap)