@@ -2,6 +2,23 @@ module JavaScript
3%access public
3%access public
5+-- TODO: Get rid of this hack, and find a better way.
7+isUndefined : Ptr -> IO Bool
10+ FFun "(function(arg) { return arg === undefined;})" [FPtr] FString) p
15+--------------------------------------------------------------------------------
17+--------------------------------------------------------------------------------
19+data Event : Type where
20+ MkEvent : Ptr -> Event
5--------------------------------------------------------------------------------
22--------------------------------------------------------------------------------
6-- Elements
23-- Elements
7--------------------------------------------------------------------------------
24--------------------------------------------------------------------------------
@@ -21,23 +38,20 @@ setOnClick (MkElem e) f =
21 , FFunction (FAny Event) (FAny (IO Bool))
38 , FFunction (FAny Event) (FAny (IO Bool))
22 ] FUnit) e f
39 ] FUnit) e f
23--------------------------------------------------------------------------------
40--------------------------------------------------------------------------------
25−--------------------------------------------------------------------------------
27−data Event : Type where
28− MkEvent : Ptr -> Event
30−--------------------------------------------------------------------------------
31-- Nodelists
41-- Nodelists
32--------------------------------------------------------------------------------
42--------------------------------------------------------------------------------
34data NodeList : Type where
44data NodeList : Type where
35 MkNodeList : Ptr -> NodeList
45 MkNodeList : Ptr -> NodeList
37−elemAt : NodeList -> Nat -> IO Element
47+elemAt : NodeList -> Nat -> IO (Maybe Element)
38elemAt (MkNodeList p) i = do
48elemAt (MkNodeList p) i = do
39− i <- mkForeign (FFun ".item" [FPtr, FInt] FPtr) p (cast i)
49+ e <- mkForeign (FFun ".item" [FPtr, FInt] FPtr) p (cast i)
40− return (MkElem i)
52+ then return $ Just (MkElem e)
41--------------------------------------------------------------------------------
55--------------------------------------------------------------------------------
42-- Intervals
56-- Intervals
43--------------------------------------------------------------------------------
57--------------------------------------------------------------------------------