@@ -1,32 +1,32 @@
1{-# OPTIONS_GHC -Wall #-}
1{-# OPTIONS_GHC -Wall #-}
2{-# LANGUAGE OverloadedStrings #-}
2{-# LANGUAGE OverloadedStrings #-}
3module AST.Module.Name
3module AST.Module.Name
5− , Canonical(..)
4+ ( Canonical(..)
6− , inVirtualDom, inCore, inHtml, inBrowser
5+ , basics, maybe, list, array
6+ , jsonEncode, cmd, sub
7− , toString, toText, canonicalToText
7+ , canonicalToText
8 , isKernel, getKernel, canonicalIsKernel
8 , isKernel, getKernel, canonicalIsKernel
13+import Prelude hiding (maybe)
12import Data.Binary
14import Data.Binary
13import qualified Data.Text as Text
15import qualified Data.Text as Text
14import Data.Text (Text)
16import Data.Text (Text)
16−import qualified Elm.Package as Package
18+import qualified Elm.Name as N
19+import qualified Elm.Package as Pkg
23−type Raw = Text -- must be non-empty
26data Canonical =
26data Canonical =
28− { _package :: !Package.Name
28+ { _package :: !Pkg.Name
29− , _module :: !Raw
29+ , _module :: !N.Name
31 deriving (Eq, Ord)
31 deriving (Eq, Ord)
@@ -35,56 +35,60 @@ data Canonical =
38−inVirtualDom :: Raw -> Canonical
38+basics :: Canonical
39−inVirtualDom raw =
39+basics =
40− Canonical Package.virtualDom raw
40+ Canonical Pkg.core "Basics"
43−inCore :: Raw -> Canonical
43+maybe :: Canonical
44−inCore raw =
44+maybe =
45− Canonical Package.core raw
45+ Canonical Pkg.core "Maybe"
48−inHtml :: Raw -> Canonical
48+list :: Canonical
50− Canonical Package.html raw
50+ Canonical Pkg.core "List"
53−inBrowser :: Raw -> Canonical
53+array :: Canonical
54−inBrowser raw =
54+array =
55− Canonical Package.browser raw
55+ Canonical Pkg.core "Array"
58+jsonEncode :: Canonical
60+ Canonical Pkg.core "Json.Encode"
65+ Canonical Pkg.core "Platform.Cmd"
62−toString :: Raw -> String
70+ Canonical Pkg.core "Platform.Sub"
67−{-# INLINE toText #-}
72+
68−toText :: Raw -> Text
73+
69−toText name =
74+-- CONVERSIONS
73canonicalToText :: Canonical -> Text
77canonicalToText :: Canonical -> Text
74canonicalToText (Canonical _ name) =
78canonicalToText (Canonical _ name) =
79-- IS KERNEL
83-- IS KERNEL
82−isKernel :: Raw -> Bool
86+isKernel :: N.Name -> Bool
83isKernel name =
87isKernel name =
84 Text.isPrefixOf "Elm.Kernel." name
88 Text.isPrefixOf "Elm.Kernel." name
87−getKernel :: Raw -> Text
91+getKernel :: N.Name -> Text
88getKernel name =
92getKernel name =
89 Text.drop 11 name
93 Text.drop 11 name
@@ -99,8 +103,8 @@ canonicalIsKernel (Canonical _ name) =
101instance Binary Canonical where
105instance Binary Canonical where
102− put (Canonical home name) =
106+ put (Canonical a b) =
103− put home >> put name
107+ put a >> put b
106 Canonical <$> get <*> get
110 Canonical <$> get <*> get