on bede6f3 help sign in
elk/src/AST/Module/Name.hs
72 lines 1.2 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 name =
49 Text.unpack name
52canonicalToString :: Canonical -> String
53canonicalToString (Canonical _ name) =
54 toString name
57isNative :: Raw -> Bool
58isNative name =
59 Text.isPrefixOf "Native." name
62canonicalIsNative :: Canonical -> Bool
63canonicalIsNative (Canonical _ name) =
64 isNative name
67instance Binary Canonical where
68 put (Canonical home name) =
69 put home >> put name
71 get =
72 Canonical <$> get <*> get