Skip to content

Commit aa37a74

Browse files
committed
Provide complete and specific coercions, without F
1 parent 309634a commit aa37a74

File tree

11 files changed

+194
-67
lines changed

11 files changed

+194
-67
lines changed

src/Web/DOM/CharacterData.purs

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,40 @@ module Web.DOM.CharacterData where
22

33
import Prelude
44

5+
import Data.Maybe (Maybe)
56
import Effect (Effect)
67
import Unsafe.Coerce (unsafeCoerce)
78
import Web.DOM.ChildNode (ChildNode)
89
import Web.DOM.Internal.Types (Node)
910
import Web.DOM.NonDocumentTypeChildNode (NonDocumentTypeChildNode)
11+
import Web.Event.EventTarget (EventTarget)
12+
import Web.Internal.FFI (unsafeReadProtoTagged)
1013

1114
foreign import data CharacterData :: Type
1215

16+
fromNode :: Node -> Maybe CharacterData
17+
fromNode = unsafeReadProtoTagged "CharacterData"
18+
19+
fromChildNode :: ChildNode -> Maybe CharacterData
20+
fromChildNode = unsafeReadProtoTagged "CharacterData"
21+
22+
fromNonDocumentTypeChildNode :: NonDocumentTypeChildNode -> Maybe CharacterData
23+
fromNonDocumentTypeChildNode = unsafeReadProtoTagged "CharacterData"
24+
25+
fromEventTarget :: EventTarget -> Maybe CharacterData
26+
fromEventTarget = unsafeReadProtoTagged "CharacterData"
27+
28+
toNode :: CharacterData -> Node
29+
toNode = unsafeCoerce
30+
1331
toChildNode :: CharacterData -> ChildNode
1432
toChildNode = unsafeCoerce
1533

1634
toNonDocumentTypeChildNode :: CharacterData -> NonDocumentTypeChildNode
1735
toNonDocumentTypeChildNode = unsafeCoerce
1836

19-
toNode :: CharacterData -> Node
20-
toNode = unsafeCoerce
37+
toEventTarget :: CharacterData -> EventTarget
38+
toEventTarget = unsafeCoerce
2139

2240
foreign import data_ :: CharacterData -> Effect String
2341

src/Web/DOM/Comment.purs

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,42 @@
11
module Web.DOM.Comment where
22

3+
import Data.Maybe (Maybe)
34
import Unsafe.Coerce (unsafeCoerce)
45
import Web.DOM.CharacterData (CharacterData)
6+
import Web.DOM.ChildNode (ChildNode)
7+
import Web.DOM.Internal.Types (Node)
8+
import Web.DOM.NonDocumentTypeChildNode (NonDocumentTypeChildNode)
9+
import Web.Event.EventTarget (EventTarget)
10+
import Web.Internal.FFI (unsafeReadProtoTagged)
511

612
foreign import data Comment :: Type
713

8-
toCharacterData :: Comment -> CharacterData
14+
fromCharacterData :: CharacterData -> Maybe Comment
15+
fromCharacterData = unsafeCoerce
16+
17+
fromNode :: Node -> Maybe Comment
18+
fromNode = unsafeReadProtoTagged "Comment"
19+
20+
fromChildNode :: ChildNode -> Maybe Comment
21+
fromChildNode = unsafeReadProtoTagged "Comment"
22+
23+
fromNonDocumentTypeChildNode :: NonDocumentTypeChildNode -> Maybe Comment
24+
fromNonDocumentTypeChildNode = unsafeReadProtoTagged "Comment"
25+
26+
fromEventTarget :: EventTarget -> Maybe Comment
27+
fromEventTarget = unsafeReadProtoTagged "Comment"
28+
29+
toCharacterData :: Comment -> Comment
930
toCharacterData = unsafeCoerce
31+
32+
toNode :: Comment -> Node
33+
toNode = unsafeCoerce
34+
35+
toChildNode :: Comment -> ChildNode
36+
toChildNode = unsafeCoerce
37+
38+
toNonDocumentTypeChildNode :: Comment -> NonDocumentTypeChildNode
39+
toNonDocumentTypeChildNode = unsafeCoerce
40+
41+
toEventTarget :: Node -> Comment
42+
toEventTarget = unsafeCoerce

src/Web/DOM/Document.purs

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
module Web.DOM.Document
22
( Document
3-
, read
3+
, fromNode
4+
, fromParentNode
5+
, fromNonElementParentNode
6+
, fromEventTarget
47
, toNode
58
, toParentNode
69
, toNonElementParentNode
@@ -31,25 +34,33 @@ import Prelude
3134
import Data.Maybe (Maybe)
3235
import Data.Nullable (Nullable, toMaybe, toNullable)
3336
import Effect (Effect)
34-
import Foreign (Foreign, F)
3537
import Unsafe.Coerce (unsafeCoerce)
3638
import Web.DOM.Comment (Comment)
3739
import Web.DOM.DocumentFragment (DocumentFragment)
3840
import Web.DOM.DocumentType (DocumentType)
3941
import Web.DOM.Element (Element)
4042
import Web.DOM.HTMLCollection (HTMLCollection)
41-
import Web.DOM.Internal.FFI (unsafeReadProtoTagged)
4243
import Web.DOM.Internal.Types (Node)
4344
import Web.DOM.NonElementParentNode (NonElementParentNode)
4445
import Web.DOM.ParentNode (ParentNode)
4546
import Web.DOM.ProcessingInstruction (ProcessingInstruction)
4647
import Web.DOM.Text (Text)
4748
import Web.Event.EventTarget (EventTarget)
49+
import Web.Internal.FFI (unsafeReadProtoTagged)
4850

4951
foreign import data Document :: Type
5052

51-
read :: Foreign -> F Document
52-
read = unsafeReadProtoTagged "Document"
53+
fromNode :: Node -> Maybe Document
54+
fromNode = unsafeReadProtoTagged "Document"
55+
56+
fromParentNode :: ParentNode -> Maybe Document
57+
fromParentNode = unsafeReadProtoTagged "Document"
58+
59+
fromNonElementParentNode :: NonElementParentNode -> Maybe Document
60+
fromNonElementParentNode = unsafeReadProtoTagged "Document"
61+
62+
fromEventTarget :: EventTarget -> Maybe Document
63+
fromEventTarget = unsafeReadProtoTagged "Document"
5364

5465
toNode :: Document -> Node
5566
toNode = unsafeCoerce

src/Web/DOM/DocumentFragment.purs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,34 @@
11
module Web.DOM.DocumentFragment where
22

3+
import Data.Maybe (Maybe)
34
import Unsafe.Coerce (unsafeCoerce)
5+
import Web.DOM.ChildNode (ChildNode)
46
import Web.DOM.Internal.Types (Node)
57
import Web.DOM.NonElementParentNode (NonElementParentNode)
68
import Web.DOM.ParentNode (ParentNode)
9+
import Web.Event.EventTarget (EventTarget)
10+
import Web.Internal.FFI (unsafeReadProtoTagged)
711

812
foreign import data DocumentFragment :: Type
913

14+
fromNode :: Node -> Maybe DocumentFragment
15+
fromNode = unsafeReadProtoTagged "DocumentFragment"
16+
17+
fromChildNode :: ChildNode -> Maybe DocumentFragment
18+
fromChildNode = unsafeReadProtoTagged "DocumentFragment"
19+
20+
fromParentNode :: ParentNode -> Maybe DocumentFragment
21+
fromParentNode = unsafeReadProtoTagged "DocumentFragment"
22+
23+
fromNonElementParentNode :: NonElementParentNode -> Maybe DocumentFragment
24+
fromNonElementParentNode = unsafeReadProtoTagged "DocumentFragment"
25+
26+
fromEventTarget :: EventTarget -> Maybe DocumentFragment
27+
fromEventTarget = unsafeReadProtoTagged "DocumentFragment"
28+
29+
toNode :: DocumentFragment -> Node
30+
toNode = unsafeCoerce
31+
1032
toChildNode :: DocumentFragment -> Node
1133
toChildNode = unsafeCoerce
1234

@@ -15,3 +37,6 @@ toParentNode = unsafeCoerce
1537

1638
toNonElementParentNode :: DocumentFragment -> NonElementParentNode
1739
toNonElementParentNode = unsafeCoerce
40+
41+
toEventTarget :: DocumentFragment -> EventTarget
42+
toEventTarget = unsafeCoerce

src/Web/DOM/DocumentType.purs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,32 @@
11
module Web.DOM.DocumentType where
22

3+
import Data.Maybe (Maybe)
34
import Unsafe.Coerce (unsafeCoerce)
45
import Web.DOM.ChildNode (ChildNode)
56
import Web.DOM.Internal.Types (Node)
7+
import Web.Event.EventTarget (EventTarget)
8+
import Web.Internal.FFI (unsafeReadProtoTagged)
69

710
foreign import data DocumentType :: Type
811

9-
toChildNode :: DocumentType -> ChildNode
10-
toChildNode = unsafeCoerce
12+
fromNode :: Node -> Maybe DocumentType
13+
fromNode = unsafeReadProtoTagged "DocumentType"
14+
15+
fromChildNode :: ChildNode -> Maybe DocumentType
16+
fromChildNode = unsafeReadProtoTagged "DocumentType"
17+
18+
fromEventTarget :: EventTarget -> Maybe DocumentType
19+
fromEventTarget = unsafeReadProtoTagged "DocumentType"
1120

1221
toNode :: DocumentType -> Node
1322
toNode = unsafeCoerce
1423

24+
toChildNode :: DocumentType -> ChildNode
25+
toChildNode = unsafeCoerce
26+
27+
toEventTarget :: DocumentType -> EventTarget
28+
toEventTarget = unsafeCoerce
29+
1530
foreign import name :: DocumentType -> String
1631
foreign import publicId :: DocumentType -> String
1732
foreign import systemId :: DocumentType -> String

src/Web/DOM/Element.purs

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
module Web.DOM.Element
22
( module Exports
3-
, read
3+
, fromNode
4+
, fromChildNode
5+
, fromNonDocumentTypeChildNode
6+
, fromParentNode
7+
, fromEventTarget
48
, toNode
59
, toChildNode
10+
, toNonDocumentTypeChildNode
611
, toParentNode
712
, toEventTarget
813
, namespaceURI
@@ -37,18 +42,29 @@ import Prelude
3742
import Data.Maybe (Maybe)
3843
import Data.Nullable (Nullable, toMaybe, toNullable)
3944
import Effect (Effect)
40-
import Foreign (Foreign, F)
4145
import Unsafe.Coerce (unsafeCoerce)
4246
import Web.DOM.ChildNode (ChildNode)
43-
import Web.DOM.Internal.FFI (unsafeReadProtoTagged)
4447
import Web.DOM.Internal.Types (Element) as Exports
4548
import Web.DOM.Internal.Types (Element, HTMLCollection, Node)
4649
import Web.DOM.NonDocumentTypeChildNode (NonDocumentTypeChildNode)
4750
import Web.DOM.ParentNode (ParentNode)
4851
import Web.Event.EventTarget (EventTarget)
52+
import Web.Internal.FFI (unsafeReadProtoTagged)
4953

50-
read :: Foreign -> F Element
51-
read = unsafeReadProtoTagged "Element"
54+
fromNode :: Node -> Maybe Element
55+
fromNode = unsafeReadProtoTagged "Element"
56+
57+
fromChildNode :: ChildNode -> Maybe Element
58+
fromChildNode = unsafeReadProtoTagged "Element"
59+
60+
fromNonDocumentTypeChildNode :: NonDocumentTypeChildNode -> Maybe Element
61+
fromNonDocumentTypeChildNode = unsafeReadProtoTagged "Element"
62+
63+
fromParentNode :: ParentNode -> Maybe Element
64+
fromParentNode = unsafeReadProtoTagged "Element"
65+
66+
fromEventTarget :: EventTarget -> Maybe Element
67+
fromEventTarget = unsafeReadProtoTagged "Element"
5268

5369
toNode :: Element -> Node
5470
toNode = unsafeCoerce

src/Web/DOM/Internal/FFI.js

Lines changed: 0 additions & 22 deletions
This file was deleted.

src/Web/DOM/Internal/FFI.purs

Lines changed: 0 additions & 23 deletions
This file was deleted.

src/Web/DOM/Node.purs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
module Web.DOM.Node
22
( module Exports
3-
, read
3+
, fromEventTarget
4+
, toEventTarget
45
, nodeType
56
, nodeTypeIndex
67
, nodeName
@@ -39,18 +40,17 @@ import Data.Enum (toEnum)
3940
import Data.Maybe (Maybe, fromJust)
4041
import Data.Nullable (Nullable, toMaybe)
4142
import Effect (Effect)
42-
import Foreign (Foreign, F)
4343
import Unsafe.Coerce (unsafeCoerce)
4444
import Web.DOM.Document (Document)
4545
import Web.DOM.Element (Element)
46-
import Web.DOM.Internal.FFI (unsafeReadProtoTagged)
4746
import Web.DOM.Internal.Types (Node) as Exports
4847
import Web.DOM.Internal.Types (Node, NodeList)
4948
import Web.DOM.NodeType (NodeType)
5049
import Web.Event.EventTarget (EventTarget)
50+
import Web.Internal.FFI (unsafeReadProtoTagged)
5151

52-
read :: Foreign -> F Node
53-
read = unsafeReadProtoTagged "Node"
52+
fromEventTarget :: EventTarget -> Maybe Node
53+
fromEventTarget = unsafeReadProtoTagged "Node"
5454

5555
toEventTarget :: Node -> EventTarget
5656
toEventTarget = unsafeCoerce
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,45 @@
11
module Web.DOM.ProcessingInstruction where
22

3+
import Data.Maybe (Maybe)
34
import Effect (Effect)
45
import Unsafe.Coerce (unsafeCoerce)
56
import Web.DOM.CharacterData (CharacterData)
7+
import Web.DOM.ChildNode (ChildNode)
8+
import Web.DOM.Internal.Types (Node)
9+
import Web.DOM.NonDocumentTypeChildNode (NonDocumentTypeChildNode)
10+
import Web.Event.EventTarget (EventTarget)
11+
import Web.Internal.FFI (unsafeReadProtoTagged)
612

713
foreign import data ProcessingInstruction :: Type
814

15+
fromCharacterData :: CharacterData -> Maybe ProcessingInstruction
16+
fromCharacterData = unsafeReadProtoTagged "ProcessingInstruction"
17+
18+
fromNode :: Node -> Maybe ProcessingInstruction
19+
fromNode = unsafeReadProtoTagged "ProcessingInstruction"
20+
21+
fromChildNode :: ChildNode -> Maybe ProcessingInstruction
22+
fromChildNode = unsafeReadProtoTagged "ProcessingInstruction"
23+
24+
fromNonDocumentTypeChildNode :: NonDocumentTypeChildNode -> Maybe ProcessingInstruction
25+
fromNonDocumentTypeChildNode = unsafeReadProtoTagged "ProcessingInstruction"
26+
27+
fromEventTarget :: EventTarget -> Maybe ProcessingInstruction
28+
fromEventTarget = unsafeReadProtoTagged "ProcessingInstruction"
29+
30+
toNode :: ProcessingInstruction -> Node
31+
toNode = unsafeCoerce
32+
933
toCharacterData :: ProcessingInstruction -> CharacterData
1034
toCharacterData = unsafeCoerce
1135

36+
toChildNode :: ProcessingInstruction -> ChildNode
37+
toChildNode = unsafeCoerce
38+
39+
toNonDocumentTypeChildNode :: ProcessingInstruction -> NonDocumentTypeChildNode
40+
toNonDocumentTypeChildNode = unsafeCoerce
41+
42+
toEventTarget :: Node -> ProcessingInstruction
43+
toEventTarget = unsafeCoerce
44+
1245
foreign import target :: ProcessingInstruction -> Effect String

0 commit comments

Comments
 (0)