on eb97f2a help sign in
elk/src/AST/Module/Name.hs
59 lines 950 B history raw
1module AST.Module.Name where
3import Data.Binary
4import qualified Data.List as List
6import qualified Elm.Package as Package
9type Raw = [String] -- must be non-empty
12data Canonical = Canonical
13 { _package :: Package.Name
14 , _module :: Raw
15 }
16 deriving (Eq, Ord, Show)
19inVirtualDom :: Raw -> Canonical
20inVirtualDom raw =
21 Canonical Package.virtualDom raw
24inCore :: Raw -> Canonical
25inCore raw =
26 Canonical Package.core raw
29inHtml :: Raw -> Canonical
30inHtml raw =
31 Canonical Package.html raw
34toString :: Raw -> String
35toString rawName =
36 List.intercalate "." rawName
39canonicalToString :: Canonical -> String
40canonicalToString (Canonical _ rawName) =
41 toString rawName
44isNative :: Raw -> Bool
45isNative name =
46 case name of
47 "Native" : _ ->
48 True
50 _ ->
51 False
54instance Binary Canonical where
55 put (Canonical home name) =
56 put home >> put name
58 get =
59 Canonical <$> get <*> get