on 5b5230c help sign in
elk/src/AST/Module/Name.hs
54 lines 861 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)
19inCore :: Raw -> Canonical
20inCore raw =
21 Canonical Package.core raw
24inHtml :: Raw -> Canonical
25inHtml raw =
26 Canonical Package.html raw
29toString :: Raw -> String
30toString rawName =
31 List.intercalate "." rawName
34canonicalToString :: Canonical -> String
35canonicalToString (Canonical _ rawName) =
36 toString rawName
39isNative :: Raw -> Bool
40isNative name =
41 case name of
42 "Native" : _ ->
43 True
45 _ ->
46 False
49instance Binary Canonical where
50 put (Canonical home name) =
51 put home >> put name
53 get =
54 Canonical <$> get <*> get