on 8713bd9 help sign in
elk/src/AST/Module/Name.hs
116 lines 1.6 kB history raw
1{-# OPTIONS_GHC -Wall #-}
2{-# LANGUAGE OverloadedStrings #-}
3module AST.Module.Name
4 ( Canonical(..)
5 , basics, maybe, list, array
6 , jsonDecode, jsonEncode
7 , cmd, sub
8 , canonicalToText
9 , isKernel, getKernel, canonicalIsKernel
10 )
11 where
14import Prelude hiding (maybe)
15import Data.Binary
16import qualified Data.Text as Text
17import Data.Text (Text)
19import qualified Elm.Name as N
20import qualified Elm.Package as Pkg
24-- NAMES
27data Canonical =
28 Canonical
29 { _package :: !Pkg.Name
30 , _module :: !N.Name
31 }
32 deriving (Eq, Ord)
36-- HELPERS
39basics :: Canonical
40basics =
41 Canonical Pkg.core "Basics"
44maybe :: Canonical
45maybe =
46 Canonical Pkg.core "Maybe"
49list :: Canonical
50list =
51 Canonical Pkg.core "List"
54array :: Canonical
55array =
56 Canonical Pkg.core "Array"
59jsonDecode :: Canonical
60jsonDecode =
61 Canonical Pkg.core "Json.Decode"
64jsonEncode :: Canonical
65jsonEncode =
66 Canonical Pkg.core "Json.Encode"
69cmd :: Canonical
70cmd =
71 Canonical Pkg.core "Platform.Cmd"
74sub :: Canonical
75sub =
76 Canonical Pkg.core "Platform.Sub"
80-- CONVERSIONS
83canonicalToText :: Canonical -> Text
84canonicalToText (Canonical _ name) =
85 name
89-- IS KERNEL
92isKernel :: N.Name -> Bool
93isKernel name =
94 Text.isPrefixOf "Elm.Kernel." name
97getKernel :: N.Name -> Text
98getKernel name =
99 Text.drop 11 name
102canonicalIsKernel :: Canonical -> Bool
103canonicalIsKernel (Canonical _ name) =
104 isKernel name
108-- BINARY
111instance Binary Canonical where
112 put (Canonical a b) =
113 put a >> put b
115 get =
116 Canonical <$> get <*> get