1{-# OPTIONS_GHC -Wall #-}
2{-# LANGUAGE OverloadedStrings #-}
5 , Canonical(..), Home(..)
7 , local, topLevel, fromModule
9 , int, float, char, string, tuple
12 , never, task, cmd, sub, router, shader, decoder
14 , is, isJson, isMaybe, isArray, isTask, isList
15 , isKernel, isTuple, isPrim, isLocal
21import Data.Monoid ((<>))
22import Data.Text (Text)
24import qualified AST.Helpers as Help
25import qualified AST.Module.Name as ModuleName
26import qualified Elm.Package as Pkg
43 | Module !ModuleName.Canonical
44 | TopLevel !ModuleName.Canonical
61data Global = Global !ModuleName.Canonical !Text
69local :: Text -> Canonical
74topLevel :: ModuleName.Canonical -> Text -> Canonical
76 Canonical (TopLevel home) x
79fromModule :: ModuleName.Canonical -> Text -> Canonical
81 Canonical (Module home) name
84inCore :: ModuleName.Raw -> Text -> Canonical
86 Canonical (Module (ModuleName.inCore home)) name
89inHtml :: ModuleName.Raw -> Text -> Canonical
91 Canonical (Module (ModuleName.inHtml home)) name
100 Canonical BuiltIn "Int"
105 Canonical BuiltIn "Float"
110 Canonical BuiltIn "Char"
115 Canonical BuiltIn "String"
118tuple :: Int -> Canonical
120 Canonical BuiltIn (Help.makeTuple size)
129 Canonical BuiltIn "List"
134 Canonical BuiltIn "::"
139 Canonical BuiltIn "[]"
148 Canonical BuiltIn "Bool"
153 Canonical BuiltIn "True"
158 Canonical BuiltIn "False"
167 inCore "Basics" "Never"
172 inCore "Platform" "Task"
177 inCore "Platform.Cmd" "Cmd"
182 inCore "Platform.Sub" "Sub"
187 inCore "Platform" "Router"
192 fromModule (ModuleName.Canonical Pkg.webgl "WebGL") "Shader"
197 inCore "Json.Decode" "Decoder"
201-- VARIABLE RECOGNIZERS
204isLocalHome :: Home -> Bool
220isCons :: Canonical -> Bool
223 Canonical BuiltIn "::" ->
230is :: ModuleName.Raw -> Text -> Canonical -> Bool
232 var == inCore home name
235isJson :: Canonical -> Bool
237 is "Json.Encode" "Value"
240isMaybe :: Canonical -> Bool
244isArray :: Canonical -> Bool
249isTask :: Canonical -> Bool
254isList :: Canonical -> Bool
256 var == Canonical BuiltIn "List"
259isKernel :: Canonical -> Bool
262 Canonical (Module name) _ ->
263 ModuleName.canonicalIsKernel name
269isTuple :: Canonical -> Bool
272 Canonical BuiltIn name ->
279isPrim :: Text -> Canonical -> Bool
280isPrim prim (Canonical home name) =
289isLocal :: (Text -> Bool) -> Canonical -> Bool
290isLocal check (Canonical home name) =
303rawToText :: Raw -> Text
304rawToText (Raw name) =
308toText :: Canonical -> Text
309toText (Canonical home name) =
315 ModuleName.canonicalToText moduleName <> "." <> name
325-- BINARY SERIALIZATION
328instance Binary Global where
329 put (Global home name) =
333 Global <$> get <*> get
336instance Binary Canonical where
337 put (Canonical home name) =
340 putWord8 0 >> put name
343 putWord8 1 >> put path >> put name
346 putWord8 2 >> put path >> put name
349 putWord8 3 >> put name
354 0 -> Canonical BuiltIn <$> get
355 1 -> Canonical . Module <$> get <*> get
356 2 -> Canonical . TopLevel <$> get <*> get
357 3 -> Canonical Local <$> get
358 _ -> 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