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
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"
196-- VARIABLE RECOGNIZERS
199isLocalHome :: Home -> Bool
215isCons :: Canonical -> Bool
218 Canonical BuiltIn "::" ->
225is :: ModuleName.Raw -> Text -> Canonical -> Bool
227 var == inCore home name
230isJson :: Canonical -> Bool
232 is "Json.Encode" "Value"
235isMaybe :: Canonical -> Bool
239isArray :: Canonical -> Bool
244isTask :: Canonical -> Bool
249isList :: Canonical -> Bool
251 var == Canonical BuiltIn "List"
254isKernel :: Canonical -> Bool
257 Canonical (Module name) _ ->
258 ModuleName.canonicalIsKernel name
264isTuple :: Canonical -> Bool
267 Canonical BuiltIn name ->
274isPrim :: Text -> Canonical -> Bool
275isPrim prim (Canonical home name) =
284isLocal :: (Text -> Bool) -> Canonical -> Bool
285isLocal check (Canonical home name) =
298rawToText :: Raw -> Text
299rawToText (Raw name) =
303toText :: Canonical -> Text
304toText (Canonical home name) =
310 ModuleName.canonicalToText moduleName <> "." <> name
320-- BINARY SERIALIZATION
323instance Binary Global where
324 put (Global home name) =
328 Global <$> get <*> get
331instance Binary Canonical where
332 put (Canonical home name) =
335 putWord8 0 >> put name
338 putWord8 1 >> put path >> put name
341 putWord8 2 >> put path >> put name
344 putWord8 3 >> put name
349 0 -> Canonical BuiltIn <$> get
350 1 -> Canonical . Module <$> get <*> get
351 2 -> Canonical . TopLevel <$> get <*> get
352 3 -> Canonical Local <$> get
353 _ -> 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