@@ -1,32 +1,32 @@
11{-# OPTIONS_GHC -Wall #-}
22{-# LANGUAGE OverloadedStrings #-}
33module AST.Module.Name
4− ( Raw
5− , Canonical(..)
6− , inVirtualDom, inCore, inHtml, inBrowser
7− , toString, toText, canonicalToText
4+ ( Canonical(..)
5+ , basics, maybe, list, array
6+ , jsonEncode, cmd, sub
7+ , canonicalToText
88 , isKernel, getKernel, canonicalIsKernel
99 )
1010 where
1111
12+
13+import Prelude hiding (maybe)
1214import Data.Binary
1315import qualified Data.Text as Text
1416import Data.Text (Text)
1517
16−import qualified Elm.Package as Package
18+import qualified Elm.Name as N
19+import qualified Elm.Package as Pkg
1720
1821
1922
2023-- NAMES
2124
2225
23−type Raw = Text -- must be non-empty
24−
25−
2626data Canonical =
2727 Canonical
28− { _package :: !Package.Name
29− , _module :: !Raw
28+ { _package :: !Pkg.Name
29+ , _module :: !N.Name
3030 }
3131 deriving (Eq, Ord)
3232
@@ -35,56 +35,60 @@ data Canonical =
3535-- HELPERS
3636
3737
38−inVirtualDom :: Raw -> Canonical
39−inVirtualDom raw =
40− Canonical Package.virtualDom raw
38+basics :: Canonical
39+basics =
40+ Canonical Pkg.core "Basics"
4141
4242
43−inCore :: Raw -> Canonical
44−inCore raw =
45− Canonical Package.core raw
43+maybe :: Canonical
44+maybe =
45+ Canonical Pkg.core "Maybe"
4646
4747
48−inHtml :: Raw -> Canonical
49−inHtml raw =
50− Canonical Package.html raw
48+list :: Canonical
49+list =
50+ Canonical Pkg.core "List"
5151
5252
53−inBrowser :: Raw -> Canonical
54−inBrowser raw =
55− Canonical Package.browser raw
53+array :: Canonical
54+array =
55+ Canonical Pkg.core "Array"
5656
5757
58+jsonEncode :: Canonical
59+jsonEncode =
60+ Canonical Pkg.core "Json.Encode"
5861
59−-- CONVERSIONS
6062
63+cmd :: Canonical
64+cmd =
65+ Canonical Pkg.core "Platform.Cmd"
6166
62−toString :: Raw -> String
63−toString =
64− Text.unpack
6567
68+sub :: Canonical
69+sub =
70+ Canonical Pkg.core "Platform.Sub"
6671
67−{-# INLINE toText #-}
68−toText :: Raw -> Text
69−toText name =
70− name
72+
73+
74+-- CONVERSIONS
7175
7276
7377canonicalToText :: Canonical -> Text
7478canonicalToText (Canonical _ name) =
75− toText name
79+ name
7680
7781
7882
7983-- IS KERNEL
8084
8185
82−isKernel :: Raw -> Bool
86+isKernel :: N.Name -> Bool
8387isKernel name =
8488 Text.isPrefixOf "Elm.Kernel." name
8589
8690
87−getKernel :: Raw -> Text
91+getKernel :: N.Name -> Text
8892getKernel name =
8993 Text.drop 11 name
9094
@@ -99,8 +103,8 @@ canonicalIsKernel (Canonical _ name) =
99103
100104
101105instance Binary Canonical where
102− put (Canonical home name) =
103− put home >> put name
106+ put (Canonical a b) =
107+ put a >> put b
104108
105109 get =
106110 Canonical <$> get <*> get