@@ -1,6 +1,13 @@
1{-# OPTIONS_GHC -Wall #-}
1{-# OPTIONS_GHC -Wall #-}
2{-# LANGUAGE OverloadedStrings #-}
2{-# LANGUAGE OverloadedStrings #-}
3−module AST.Module.Name where
3+module AST.Module.Name
6+ , inVirtualDom, inCore, inHtml
7+ , toString, toText, canonicalToText
8+ , isNative, canonicalIsNative
5import Data.Binary
12import Data.Binary
6import qualified Data.Text as Text
13import qualified Data.Text as Text
@@ -9,17 +16,25 @@ import Data.Text (Text)
9import qualified Elm.Package as Package
16import qualified Elm.Package as Package
12type Raw = Text -- must be non-empty
23type Raw = Text -- must be non-empty
15data Canonical =
26data Canonical =
17− { _package :: Package.Name
28+ { _package :: !Package.Name
18− , _module :: Raw
29+ , _module :: !Raw
20 deriving (Eq, Ord)
31 deriving (Eq, Ord)
23inVirtualDom :: Raw -> Canonical
38inVirtualDom :: Raw -> Canonical
24inVirtualDom raw =
39inVirtualDom raw =
25 Canonical Package.virtualDom raw
40 Canonical Package.virtualDom raw
@@ -35,6 +50,10 @@ inHtml raw =
35 Canonical Package.html raw
50 Canonical Package.html raw
38toString :: Raw -> String
57toString :: Raw -> String
40 Text.unpack
59 Text.unpack
@@ -51,6 +70,10 @@ canonicalToText (Canonical _ name) =
51 toText name
70 toText name
54isNative :: Raw -> Bool
77isNative :: Raw -> Bool
55isNative name =
78isNative name =
56 Text.isPrefixOf "Native." name
79 Text.isPrefixOf "Native." name
@@ -61,9 +84,13 @@ canonicalIsNative (Canonical _ name) =
61 isNative name
84 isNative name
64instance Binary Canonical where
91instance Binary Canonical where
65− put (Canonical home name) =
92+ put (Canonical home name) =
66− put home >> put name
93+ put home >> put name
69− Canonical <$> get <*> get
96+ Canonical <$> get <*> get