on 32834fa help sign in
elk/src/AST/Module/Name.hs
110 lines 1.5 kB history raw
1{-# OPTIONS_GHC -Wall #-}
2{-# LANGUAGE OverloadedStrings #-}
3module AST.Module.Name
4 ( Canonical(..)
5 , basics, maybe, list, array
6 , jsonEncode, cmd, sub
7 , canonicalToText
8 , isKernel, getKernel, canonicalIsKernel
9 )
10 where
13import Prelude hiding (maybe)
14import Data.Binary
15import qualified Data.Text as Text
16import Data.Text (Text)
18import qualified Elm.Name as N
19import qualified Elm.Package as Pkg
23-- NAMES
26data Canonical =
27 Canonical
28 { _package :: !Pkg.Name
29 , _module :: !N.Name
30 }
31 deriving (Eq, Ord)
35-- HELPERS
38basics :: Canonical
39basics =
40 Canonical Pkg.core "Basics"
43maybe :: Canonical
44maybe =
45 Canonical Pkg.core "Maybe"
48list :: Canonical
49list =
50 Canonical Pkg.core "List"
53array :: Canonical
54array =
55 Canonical Pkg.core "Array"
58jsonEncode :: Canonical
59jsonEncode =
60 Canonical Pkg.core "Json.Encode"
63cmd :: Canonical
64cmd =
65 Canonical Pkg.core "Platform.Cmd"
68sub :: Canonical
69sub =
70 Canonical Pkg.core "Platform.Sub"
74-- CONVERSIONS
77canonicalToText :: Canonical -> Text
78canonicalToText (Canonical _ name) =
79 name
83-- IS KERNEL
86isKernel :: N.Name -> Bool
87isKernel name =
88 Text.isPrefixOf "Elm.Kernel." name
91getKernel :: N.Name -> Text
92getKernel name =
93 Text.drop 11 name
96canonicalIsKernel :: Canonical -> Bool
97canonicalIsKernel (Canonical _ name) =
98 isKernel name
102-- BINARY
105instance Binary Canonical where
106 put (Canonical a b) =
107 put a >> put b
109 get =
110 Canonical <$> get <*> get