1{-# OPTIONS_GHC -Wall #-}
2{-# LANGUAGE OverloadedStrings #-}
4 ( Canonical(..), Home(..)
6 , local, topLevel, fromModule
8 , int, float, char, string
11 , never, task, router, shader, decoder
13 , is, isJson, isMaybe, isArray, isTask, isList
14 , isKernel, isPrim, isLocal
20import Data.Monoid ((<>))
21import Data.Text (Text)
23import qualified AST.Module.Name as ModuleName
24import qualified Elm.Package as Pkg
33 | Module !ModuleName.Canonical
34 | TopLevel !ModuleName.Canonical
51data Global = Global !ModuleName.Canonical !Text
59local :: Text -> Canonical
64topLevel :: ModuleName.Canonical -> Text -> Canonical
66 Canonical (TopLevel home) x
69fromModule :: ModuleName.Canonical -> Text -> Canonical
71 Canonical (Module home) name
74inCore :: ModuleName.Raw -> Text -> Canonical
76 Canonical (Module (ModuleName.inCore home)) name
79inHtml :: ModuleName.Raw -> Text -> Canonical
81 Canonical (Module (ModuleName.inHtml home)) name
90 Canonical BuiltIn "Int"
95 Canonical BuiltIn "Float"
100 Canonical BuiltIn "Char"
105 Canonical BuiltIn "String"
114 Canonical BuiltIn "List"
119 Canonical BuiltIn "::"
124 Canonical BuiltIn "[]"
133 Canonical BuiltIn "Bool"
138 Canonical BuiltIn "True"
143 Canonical BuiltIn "False"
152 inCore "Basics" "Never"
157 inCore "Platform" "Task"
162 inCore "Platform" "Router"
167 fromModule (ModuleName.Canonical Pkg.webgl "WebGL") "Shader"
172 inCore "Json.Decode" "Decoder"
176-- VARIABLE RECOGNIZERS
179isLocalHome :: Home -> Bool
195isCons :: Canonical -> Bool
198 Canonical BuiltIn "::" ->
205is :: ModuleName.Raw -> Text -> Canonical -> Bool
207 var == inCore home name
210isJson :: Canonical -> Bool
212 is "Json.Encode" "Value"
215isMaybe :: Canonical -> Bool
219isArray :: Canonical -> Bool
224isTask :: Canonical -> Bool
229isList :: Canonical -> Bool
231 var == Canonical BuiltIn "List"
234isKernel :: Canonical -> Bool
237 Canonical (Module name) _ ->
238 ModuleName.canonicalIsKernel name
244isPrim :: Text -> Canonical -> Bool
245isPrim prim (Canonical home name) =
254isLocal :: (Text -> Bool) -> Canonical -> Bool
255isLocal check (Canonical home name) =
268toText :: Canonical -> Text
269toText (Canonical home name) =
275 ModuleName.canonicalToText moduleName <> "." <> name
285-- BINARY SERIALIZATION
288instance Binary Global where
289 put (Global home name) =
293 Global <$> get <*> get
296instance Binary Canonical where
297 put (Canonical home name) =
300 putWord8 0 >> put name
303 putWord8 1 >> put path >> put name
306 putWord8 2 >> put path >> put name
309 putWord8 3 >> put name
314 0 -> Canonical BuiltIn <$> get
315 1 -> Canonical . Module <$> get <*> get
316 2 -> Canonical . TopLevel <$> get <*> get
317 3 -> Canonical Local <$> get
318 _ -> error "Unexpected tag when deserializing canonical variable"
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list