1{-# OPTIONS_GHC -Wall #-}
2{-# LANGUAGE OverloadedStrings #-}
4 ( Raw(..), Canonical(..), Home(..)
5 , local, topLevel, builtin, fromModule
6 , inCore, inHtml, cmd, sub
8 , is, isJson, isMaybe, isArray, isTask, isList
9 , isNative, isTuple, isPrimitive, isPrim, isLocal
15import Data.Monoid ((<>))
16import qualified Data.Set as Set
17import Data.Text (Text)
19import qualified AST.Helpers as Help
20import qualified AST.Module.Name as ModuleName
37 | Module !ModuleName.Canonical
38 | TopLevel !ModuleName.Canonical
55local :: Text -> Canonical
60topLevel :: ModuleName.Canonical -> Text -> Canonical
62 Canonical (TopLevel home) x
65builtin :: Text -> Canonical
70fromModule :: ModuleName.Canonical -> Text -> Canonical
72 Canonical (Module home) name
75inCore :: ModuleName.Raw -> Text -> Canonical
77 Canonical (Module (ModuleName.inCore home)) name
80inHtml :: ModuleName.Raw -> Text -> Canonical
82 Canonical (Module (ModuleName.inHtml home)) name
87 inCore "Platform.Cmd" "Cmd"
92 inCore "Platform.Sub" "Sub"
96-- VARIABLE RECOGNIZERS
99isLocalHome :: Home -> Bool
115isCons :: Canonical -> Bool
118 Canonical BuiltIn "::" ->
125is :: ModuleName.Raw -> Text -> Canonical -> Bool
127 var == inCore home name
130isJson :: Canonical -> Bool
132 is "Json.Encode" "Value"
135isMaybe :: Canonical -> Bool
139isArray :: Canonical -> Bool
144isTask :: Canonical -> Bool
149isList :: Canonical -> Bool
151 v == Canonical BuiltIn "List"
154isNative :: Canonical -> Bool
157 Canonical (Module name) _ ->
158 ModuleName.canonicalIsNative name
164isTuple :: Canonical -> Bool
167 Canonical BuiltIn name ->
174isPrimitive :: Canonical -> Bool
177 Canonical BuiltIn name ->
178 Set.member name primitiveSet
184primitiveSet :: Set.Set Text
186 Set.fromList ["Int","Float","String","Bool"]
189isPrim :: Text -> Canonical -> Bool
190isPrim prim (Canonical home name) =
199isLocal :: (Text -> Bool) -> Canonical -> Bool
200isLocal check (Canonical home name) =
213rawToText :: Raw -> Text
214rawToText (Raw name) =
218toText :: Canonical -> Text
219toText (Canonical home name) =
225 ModuleName.canonicalToText moduleName <> "." <> name
235-- BINARY SERIALIZATION
238instance Binary Canonical where
239 put (Canonical home name) =
242 putWord8 0 >> put name
245 putWord8 1 >> put path >> put name
248 putWord8 2 >> put path >> put name
251 putWord8 3 >> put name
256 0 -> Canonical BuiltIn <$> get
257 1 -> Canonical . Module <$> get <*> get
258 2 -> Canonical . TopLevel <$> get <*> get
259 3 -> Canonical Local <$> get
260 _ -> 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