on ff0b05b help sign in
elk/src/AST/Module/Name.hs
63 lines 1.1 kB history raw
1{-# OPTIONS_GHC -Wall #-}
2{-# LANGUAGE OverloadedStrings #-}
3module AST.Module.Name where
5import Data.Binary
6import qualified Data.List as List
7import qualified Data.Text as Text
8import Data.Text (Text)
10import qualified Elm.Package as Package
13type Raw = [Text] -- must be non-empty
16data Canonical = 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 rawName =
40 List.intercalate "." (map Text.unpack rawName)
43canonicalToString :: Canonical -> String
44canonicalToString (Canonical _ rawName) =
45 toString rawName
48isNative :: Raw -> Bool
49isNative name =
50 case name of
51 "Native" : _ ->
52 True
54 _ ->
55 False
58instance Binary Canonical where
59 put (Canonical home name) =
60 put home >> put name
62 get =
63 Canonical <$> get <*> get