1module Generate.JavaScript.BuiltIn
6 , effect, outgoingPort, incomingPort
11import qualified Language.ECMAScript3.Syntax as JS
13import qualified AST.Module.Name as ModuleName
14import Generate.JavaScript.Helpers ((<|), (==>), call)
15import qualified Generate.JavaScript.Variable as Var
16import qualified Reporting.Region as R
20utils :: String -> [JS.Expression ()] -> JS.Expression ()
22 Var.coreNative "Utils" func `call` args
29character :: Char -> JS.Expression ()
31 utils "chr" [ JS.StringLit () [char] ]
34string :: String -> JS.Expression ()
43list :: [JS.Expression ()] -> JS.Expression ()
47 JS.ObjectLit () [ "ctor" ==> JS.StringLit () "[]" ]
50 cons front (list back)
53cons :: JS.Expression () -> JS.Expression () -> JS.Expression ()
56 [ "ctor" ==> JS.StringLit () "::"
66recordUpdate :: JS.Expression () -> [(String, JS.Expression ())] -> JS.Expression ()
67recordUpdate record fields =
70 , JS.ObjectLit () (map (uncurry (==>)) fields)
78eq :: JS.Expression () -> JS.Expression () -> JS.Expression ()
80 utils "eq" [ left, right ]
83cmp :: JS.Expression () -> JS.Expression () -> JS.Expression ()
85 utils "cmp" [ left, right ]
92effect :: ModuleName.Canonical -> JS.Expression ()
94 Var.coreNative "Platform" "leaf" <|
95 JS.StringLit () (ModuleName.canonicalToString effectName)
98outgoingPort :: String -> JS.Expression () -> JS.Expression ()
99outgoingPort name converter =
100 Var.coreNative "Platform" "outgoingPort" `call` [ JS.StringLit () name, converter ]
103incomingPort :: String -> JS.Expression () -> JS.Expression ()
104incomingPort name converter =
105 Var.coreNative "Platform" "incomingPort" `call` [ JS.StringLit () name, converter ]
112crash :: ModuleName.Canonical -> R.Region -> Maybe (JS.Expression ()) -> JS.Expression ()
113crash home region maybeCaseCrashValue =
116 JS.StringLit () (ModuleName.canonicalToString home)
118 case maybeCaseCrashValue of
120 utils "crash" [ homeString, regionToJs region ]
123 utils "crashCase" [ homeString, regionToJs region, crashValue ]
126regionToJs :: R.Region -> JS.Expression ()
127regionToJs (R.Region start end) =
129 [ "start" ==> positionToJs start
130 , "end" ==> positionToJs end
134positionToJs :: R.Position -> JS.Expression ()
135positionToJs (R.Position line column) =
137 [ "line" ==> JS.IntLit () line
138 , "column" ==> JS.IntLit () column
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