Skip to content
This repository was archived by the owner on Oct 4, 2020. It is now read-only.

Commit 9a35333

Browse files
committed
Use Data.Foreign.unsafeReadTagged for coercions
This replaces the usage of the FFI for type coercions with Data.Foreign.
1 parent 52fb86d commit 9a35333

10 files changed

+23
-98
lines changed

src/DOM/Event/CompositionEvent.js

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
1-
/* global CompositionEvent */
21
"use strict";
32

4-
exports._eventToCompositionEvent = function (just) {
5-
return function (nothing) {
6-
return function (e) {
7-
return e instanceof CompositionEvent ? just(e) : nothing;
8-
};
9-
};
10-
};
11-
123
exports.data_ = function (e) {
134
return e.data;
145
};

src/DOM/Event/CompositionEvent.purs

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,12 @@ module DOM.Event.CompositionEvent (
44
data_
55
) where
66

7-
import Data.Maybe (Maybe(..))
8-
import DOM.Event.Types (CompositionEvent, Event)
7+
import Prelude
8+
import Data.Foreign (F, toForeign)
9+
import DOM.Event.Types (CompositionEvent, Event, readCompositionEvent)
910
import DOM.Event.Types (CompositionEvent, compositionEventToEvent, readCompositionEvent) as T
1011

11-
eventToCompositionEvent :: Event -> Maybe CompositionEvent
12-
eventToCompositionEvent = _eventToCompositionEvent Just Nothing
13-
14-
foreign import _eventToCompositionEvent
15-
:: forall a
16-
. (a -> Maybe a)
17-
-> Maybe a
18-
-> Event
19-
-> Maybe CompositionEvent
12+
eventToCompositionEvent :: Event -> F CompositionEvent
13+
eventToCompositionEvent = readCompositionEvent <<< toForeign
2014

2115
foreign import data_ :: CompositionEvent -> String

src/DOM/Event/FocusEvent.js

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
1-
/* global FocusEvent */
21
"use strict";
32

4-
exports._eventToFocusEvent = function (just) {
5-
return function (nothing) {
6-
return function (e) {
7-
return e instanceof FocusEvent ? just(e) : nothing;
8-
};
9-
};
10-
};
11-
123
exports.relatedTargetNullable = function (e) {
134
return e.relatedTarget;
145
};

src/DOM/Event/FocusEvent.purs

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,14 @@ module DOM.Event.FocusEvent
55
) where
66

77
import Prelude
8-
import Data.Maybe (Maybe (..))
8+
import Data.Foreign (F, toForeign)
9+
import Data.Maybe (Maybe)
910
import Data.Nullable (Nullable, toMaybe)
10-
import DOM.Event.Types (Event, EventTarget, FocusEvent)
11+
import DOM.Event.Types (Event, EventTarget, FocusEvent, readFocusEvent)
1112
import DOM.Event.Types (FocusEvent, focusEventToEvent, readFocusEvent) as T
1213

13-
eventToFocusEvent :: Event -> Maybe FocusEvent
14-
eventToFocusEvent = _eventToFocusEvent Just Nothing
15-
16-
foreign import _eventToFocusEvent
17-
:: forall a
18-
. (a -> Maybe a)
19-
-> Maybe a
20-
-> Event
21-
-> Maybe FocusEvent
14+
eventToFocusEvent :: Event -> F FocusEvent
15+
eventToFocusEvent = readFocusEvent <<< toForeign
2216

2317
foreign import relatedTargetNullable :: FocusEvent -> Nullable EventTarget
2418

src/DOM/Event/KeyboardEvent.js

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
1-
/* global KeyboardEvent */
21
"use strict";
32

4-
exports._eventToKeyboardEvent = function (just) {
5-
return function (nothing) {
6-
return function (e) {
7-
return e instanceof KeyboardEvent ? just(e) : nothing;
8-
};
9-
};
10-
};
11-
123
exports.key = function (e) {
134
return e.key;
145
};

src/DOM/Event/KeyboardEvent.purs

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,14 @@ module DOM.Event.KeyboardEvent
2020
import Prelude
2121
import Control.Monad.Eff (Eff)
2222
import Data.Enum (class BoundedEnum, class Enum, Cardinality(..), defaultPred, defaultSucc, toEnum)
23+
import Data.Foreign (F, toForeign)
2324
import Data.Maybe (Maybe(..), fromJust)
2425
import DOM (DOM)
25-
import DOM.Event.Types (Event, KeyboardEvent)
26+
import DOM.Event.Types (Event, KeyboardEvent, readKeyboardEvent)
2627
import DOM.Event.Types (KeyboardEvent, keyboardEventToEvent, readKeyboardEvent) as T
2728

28-
eventToKeyboardEvent :: Event -> Maybe KeyboardEvent
29-
eventToKeyboardEvent = _eventToKeyboardEvent Just Nothing
30-
31-
foreign import _eventToKeyboardEvent
32-
:: forall a
33-
. (a -> Maybe a)
34-
-> Maybe a
35-
-> Event
36-
-> Maybe KeyboardEvent
29+
eventToKeyboardEvent :: Event -> F KeyboardEvent
30+
eventToKeyboardEvent = readKeyboardEvent <<< toForeign
3731

3832
foreign import key :: KeyboardEvent -> String
3933

src/DOM/Event/MouseEvent.js

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
1-
/* global MouseEvent */
21
"use strict";
32

4-
exports._eventToMouseEvent = function (just) {
5-
return function (nothing) {
6-
return function (e) {
7-
return e instanceof MouseEvent ? just(e) : nothing;
8-
};
9-
};
10-
};
11-
123
exports.screenX = function (e) {
134
return e.screenX;
145
};

src/DOM/Event/MouseEvent.purs

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,15 @@ module DOM.Event.MouseEvent
1717

1818
import Prelude
1919
import Control.Monad.Eff (Eff)
20-
import Data.Maybe (Maybe(..))
20+
import Data.Foreign (F, toForeign)
21+
import Data.Maybe (Maybe)
2122
import Data.Nullable (Nullable, toMaybe)
2223
import DOM (DOM)
23-
import DOM.Event.Types (Event, EventTarget, MouseEvent)
24+
import DOM.Event.Types (Event, EventTarget, MouseEvent, readMouseEvent)
2425
import DOM.Event.Types (MouseEvent, mouseEventToEvent, readMouseEvent) as T
2526

26-
eventToMouseEvent :: Event -> Maybe MouseEvent
27-
eventToMouseEvent = _eventToMouseEvent Just Nothing
28-
29-
foreign import _eventToMouseEvent
30-
:: forall a
31-
. (a -> Maybe a)
32-
-> Maybe a
33-
-> Event
34-
-> Maybe MouseEvent
27+
eventToMouseEvent :: Event -> F MouseEvent
28+
eventToMouseEvent = readMouseEvent <<< toForeign
3529

3630
foreign import screenX :: MouseEvent -> Int
3731

src/DOM/Event/WheelEvent.js

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
1-
/* global WheelEvent */
21
"use strict";
32

4-
exports._eventToWheelEvent = function (just) {
5-
return function (nothing) {
6-
return function (e) {
7-
return e instanceof WheelEvent ? just(e) : nothing;
8-
};
9-
};
10-
};
11-
123
exports.deltaX = function (e) {
134
return e.deltaX;
145
};

src/DOM/Event/WheelEvent.purs

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,13 @@ module DOM.Event.WheelEvent
1313

1414
import Prelude
1515
import Data.Enum (class BoundedEnum, class Enum, Cardinality(..), defaultPred, defaultSucc, toEnum)
16+
import Data.Foreign (F, toForeign)
1617
import Data.Maybe (Maybe(..), fromJust)
17-
import DOM.Event.Types (Event, WheelEvent)
18+
import DOM.Event.Types (Event, WheelEvent, readWheelEvent)
1819
import DOM.Event.Types (WheelEvent, readWheelEvent, wheelEventToEvent) as T
1920

20-
eventToWheelEvent :: Event -> Maybe WheelEvent
21-
eventToWheelEvent = _eventToWheelEvent Just Nothing
22-
23-
foreign import _eventToWheelEvent
24-
:: forall a
25-
. (a -> Maybe a)
26-
-> Maybe a
27-
-> Event
28-
-> Maybe WheelEvent
21+
eventToWheelEvent :: Event -> F WheelEvent
22+
eventToWheelEvent = readWheelEvent <<< toForeign
2923

3024
foreign import deltaX :: WheelEvent -> Number
3125

0 commit comments

Comments
 (0)