on 36d38db help sign in
elk/src/AST/Module/Name.hs
78 lines 1.3 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 = Canonical
16 { _package :: Package.Name
17 , _module :: Raw
18 }
19 deriving (Eq, Ord, Show)
22inVirtualDom :: Raw -> Canonical
23inVirtualDom raw =
24 Canonical Package.virtualDom raw
27inCore :: Raw -> Canonical
28inCore raw =
29 Canonical Package.core raw
32inHtml :: Raw -> Canonical
33inHtml raw =
34 Canonical Package.html raw
37inWebGL :: Raw -> Canonical
38inWebGL raw =
39 Canonical Package.webgl raw
42inLinearAlgebra :: Raw -> Canonical
43inLinearAlgebra raw =
44 Canonical Package.linearAlgebra raw
47toString :: Raw -> String
48toString =
49 Text.unpack
52{-# INLINE toText #-}
53toText :: Raw -> Text
54toText name =
55 name
58canonicalToText :: Canonical -> Text
59canonicalToText (Canonical _ name) =
60 toText name
63isNative :: Raw -> Bool
64isNative name =
65 Text.isPrefixOf "Native." name
68canonicalIsNative :: Canonical -> Bool
69canonicalIsNative (Canonical _ name) =
70 isNative name
73instance Binary Canonical where
74 put (Canonical home name) =
75 put home >> put name
77 get =
78 Canonical <$> get <*> get