@@ -1,100 +0,0 @@
1−module Docs.Centralize (centralize) where
3−import Control.Arrow (second)
4−import qualified Data.Map as Map
5−import qualified Data.Maybe as Maybe
6−import Data.Text (Text)
8−import qualified AST.Declaration as Decl
9−import qualified AST.Expression.Canonical as Canonical
10−import qualified AST.Helpers as Help
11−import qualified AST.Pattern as Pattern
12−import qualified AST.Type as Type
13−import qualified Docs.AST as Docs
14−import qualified Elm.Compiler.Type.Extract as Extract
15−import qualified Reporting.Annotation as A
16−import qualified Reporting.Region as R
23−centralize :: Decl.Canonical -> Text -> Docs.Centralized
24−centralize (Decl.Decls defs unions aliases infixes) overview =
27− Map.fromList (map toInfixPair infixes)
31− (Map.fromList (map unionToEntry unions))
32− (Map.fromList (map aliasToEntry aliases))
33− (Map.fromList (Maybe.mapMaybe (defToEntry infixDict) defs))
44−makeEntry :: Text -> (R.Region, Maybe Text) -> details -> Entry details
45−makeEntry name (region, maybeComment) details =
46− ( name, A.A region (Docs.Entry maybeComment details) )
53−unionToEntry :: A.Commented (Decl.Union Type.Canonical) -> Entry Docs.Union
54−unionToEntry (A.A ann (Decl.Type name args ctors)) =
55− makeEntry name ann $ Docs.Union args $
56− map (second (map Extract.extract)) ctors
63−aliasToEntry :: A.Commented (Decl.Alias Type.Canonical) -> Entry Docs.Alias
64−aliasToEntry (A.A ann (Decl.Type name args tipe)) =
65− makeEntry name ann $ Docs.Alias args $ Extract.extract tipe
72−defToEntry :: Map.Map Text (Decl.Assoc, Int) -> A.Commented Canonical.Def -> Maybe (Entry Docs.RawValue)
73−defToEntry infixDict (A.A (_, maybeComment) definition) =
75− (Canonical.Def _ (A.A region pattern) _ maybeType) =
79− fmap (Extract.extract . A.drop) maybeType
83− Just $ makeEntry name (region, maybeComment) $
84− case Map.lookup name infixDict of
85− Just (assoc, prec) ->
86− Docs.Infix tipe assoc prec
89− if Help.isOp name then
90− Docs.Infix tipe Decl.defaultAssociativity Decl.defaultPrecedence
98−toInfixPair :: Decl.Infix -> ( Text, (Decl.Assoc, Int) )
99−toInfixPair (Decl.Infix name assoc precedence) =
100− ( name, (assoc, precedence) )