on e8bc65e help sign in
elk/src/AST/Module/Name.hs
69 lines 1.1 kB history raw
1{-# OPTIONS_GHC -Wall #-}
2{-# LANGUAGE OverloadedStrings #-}
3module AST.Module.Name where
5import Data.Binary
6import qualified Data.Text as Text
7import Data.Text (Text)
9import qualified Elm.Package as Package
12type Raw = Text -- must be non-empty
15data Canonical =
16 Canonical
17 { _package :: Package.Name
18 , _module :: Raw
19 }
20 deriving (Eq, Ord, Show)
23inVirtualDom :: Raw -> Canonical
24inVirtualDom raw =
25 Canonical Package.virtualDom raw
28inCore :: Raw -> Canonical
29inCore raw =
30 Canonical Package.core raw
33inHtml :: Raw -> Canonical
34inHtml raw =
35 Canonical Package.html raw
38toString :: Raw -> String
39toString =
40 Text.unpack
43{-# INLINE toText #-}
44toText :: Raw -> Text
45toText name =
46 name
49canonicalToText :: Canonical -> Text
50canonicalToText (Canonical _ name) =
51 toText name
54isNative :: Raw -> Bool
55isNative name =
56 Text.isPrefixOf "Native." name
59canonicalIsNative :: Canonical -> Bool
60canonicalIsNative (Canonical _ name) =
61 isNative name
64instance Binary Canonical where
65 put (Canonical home name) =
66 put home >> put name
68 get =
69 Canonical <$> get <*> get