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

Commit 670da06

Browse files
committed
WIP
1 parent c0d7ee1 commit 670da06

File tree

7 files changed

+155
-21
lines changed

7 files changed

+155
-21
lines changed

src/DOM/HTML/HTMLMediaElement.purs

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
module DOM.HTML.HTMLMediaElement where
22

3-
import Prelude (Unit())
3+
import Prelude (Unit(), (<<<))
44

55
import Control.Monad.Eff (Eff())
66

7+
import Data.Enum (toEnum)
8+
import Data.Maybe.Unsafe as U
9+
710
import DOM (DOM())
11+
import DOM.HTML.HTMLMediaElement.NetworkState (NetworkState())
12+
import DOM.HTML.HTMLMediaElement.ReadyState (ReadyState())
13+
import DOM.HTML.HTMLMediaElement.CanPlayType (CanPlayType())
814
import DOM.HTML.Types (HTMLMediaElement())
915

10-
-- enum CanPlayTypeEnum { "" /* empty string */, "maybe", "probably" };
1116
-- interface HTMLMediaElement : HTMLElement {
1217

1318
-- // error state
@@ -17,23 +22,22 @@ import DOM.HTML.Types (HTMLMediaElement())
1722
-- attribute DOMString src;
1823
-- readonly attribute DOMString currentSrc;
1924
-- attribute DOMString crossOrigin;
20-
-- const unsigned short NETWORK_EMPTY = 0;
21-
-- const unsigned short NETWORK_IDLE = 1;
22-
-- const unsigned short NETWORK_LOADING = 2;
23-
-- const unsigned short NETWORK_NO_SOURCE = 3;
24-
-- readonly attribute unsigned short networkState;
25+
26+
networkState :: HTMLMediaElement -> NetworkState
27+
networkState = U.fromJust <<< toEnum <<< readyStateIndex
28+
29+
foreign import networkStateIndex :: HTMLMediaElement -> Int
30+
2531
-- attribute DOMString preload;
2632
-- readonly attribute TimeRanges buffered;
2733
-- void load();
28-
-- CanPlayTypeEnum canPlayType(DOMString type);
29-
30-
-- // ready state
31-
-- const unsigned short HAVE_NOTHING = 0;
32-
-- const unsigned short HAVE_METADATA = 1;
33-
-- const unsigned short HAVE_CURRENT_DATA = 2;
34-
-- const unsigned short HAVE_FUTURE_DATA = 3;
35-
-- const unsigned short HAVE_ENOUGH_DATA = 4;
36-
-- readonly attribute unsigned short readyState;
34+
-- CanPlayType canPlayType(DOMString type);
35+
36+
readyState :: HTMLMediaElement -> ReadyState
37+
readyState = U.fromJust <<< toEnum <<< readyStateIndex
38+
39+
foreign import readyStateIndex :: HTMLMediaElement -> Int
40+
3741
-- readonly attribute boolean seeking;
3842

3943
-- // playback state
@@ -66,5 +70,3 @@ import DOM.HTML.Types (HTMLMediaElement())
6670
-- readonly attribute VideoTrackList videoTracks;
6771
-- readonly attribute TextTrackList textTracks;
6872
-- TextTrack addTextTrack(TextTrackKind kind, optional DOMString label = "", optional DOMString language = "");
69-
-- };
70-
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
module DOM.HTML.HTMLMediaElement.CanPlayType
2+
( CanPlayType()
3+
, runCanPlayType
4+
, unspecified
5+
, maybe
6+
, probably
7+
) where
8+
9+
import Prelude
10+
import Data.Maybe (Maybe(..))
11+
import Data.Enum (Enum, Cardinality(..), defaultSucc, defaultPred)
12+
13+
newtype CanPlayType = CanPlayType String
14+
15+
runCanPlayType :: CanPlayType -> String
16+
runCanPlayType (CanPlayType t) = t
17+
18+
instance eqCanPlayType :: Eq CanPlayType where
19+
eq (CanPlayType x) (CanPlayType y) = x == y
20+
21+
instance ordCanPlayType :: Ord CanPlayType where
22+
compare (CanPlayType x) (CanPlayType y) = compare x y
23+
24+
instance showCanPlayType :: Ord CanPlayType where
25+
show (CanPlayType t) = "(CanPlayType " <> show t <> ")"
26+
27+
unspecified :: CanPlayType
28+
unspecified = CanPlayType ""
29+
30+
maybe :: CanPlayType
31+
maybe = CanPlayType "maybe"
32+
33+
probably :: CanPlayType
34+
probably = CanPlayType "probably"
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
module DOM.HTML.HTMLMediaElement.NetworkState (NetworkState(..)) where
2+
3+
import Prelude
4+
import Data.Maybe (Maybe(..))
5+
import Data.Enum (Enum, Cardinality(..), defaultSucc, defaultPred)
6+
7+
data NetworkState
8+
= NETWORK_EMPTY
9+
| NETWORK_IDLE
10+
| NETWORK_LOADING
11+
| NETWORK_NO_SOURCE
12+
13+
instance eqNetworkState :: Eq NetworkState where
14+
eq NETWORK_EMPTY NETWORK_EMPTY = true
15+
eq NETWORK_IDLE NETWORK_IDLE = true
16+
eq NETWORK_LOADING NETWORK_LOADING = true
17+
eq NETWORK_NO_SOURCE NETWORK_NO_SOURCE = true
18+
eq _ _ = false
19+
20+
instance ordNetworkState :: Ord NetworkState where
21+
compare x y = compare (fromEnumNetworkState x) (fromEnumNetworkState y)
22+
23+
instance boundedNetworkState :: Bounded NetworkState where
24+
bottom = NETWORK_EMPTY
25+
top = NETWORK_NO_SOURCE
26+
27+
instance boundedOrdNetworkState :: BoundedOrd NetworkState
28+
29+
instance enumNetworkState :: Enum NetworkState where
30+
cardinality = Cardinality 4
31+
succ = defaultSucc toEnumNetworkState fromEnumNetworkState
32+
pred = defaultPred toEnumNetworkState fromEnumNetworkState
33+
toEnum = toEnumNetworkState
34+
fromEnum = fromEnumNetworkState
35+
36+
toEnumNetworkState :: Int -> Maybe NetworkState
37+
toEnumNetworkState 0 = Just NETWORK_EMPTY
38+
toEnumNetworkState 1 = Just NETWORK_IDLE
39+
toEnumNetworkState 2 = Just NETWORK_LOADING
40+
toEnumNetworkState 3 = Just NETWORK_NO_SOURCE
41+
toEnumNetworkState _ = Nothing
42+
43+
fromEnumNetworkState :: NetworkState -> Int
44+
fromEnumNetworkState NETWORK_EMPTY = 0
45+
fromEnumNetworkState NETWORK_IDLE = 1
46+
fromEnumNetworkState NETWORK_LOADING = 2
47+
fromEnumNetworkState NETWORK_NO_SOURCE = 3
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
module DOM.HTML.HTMLMediaElement.ReadyState (ReadyState(..)) where
2+
3+
import Prelude
4+
import Data.Maybe (Maybe(..))
5+
import Data.Enum (Enum, Cardinality(..), defaultSucc, defaultPred)
6+
7+
data ReadyState
8+
= HAVE_NOTHING
9+
| HAVE_METADATA
10+
| HAVE_CURRENT_DATA
11+
| HAVE_FUTURE_DATA
12+
| HAVE_ENOUGH_DATA
13+
14+
instance eqReadyState :: Eq ReadyState where
15+
eq HAVE_NOTHING HAVE_NOTHING = true
16+
eq HAVE_METADATA HAVE_METADATA = true
17+
eq HAVE_CURRENT_DATA HAVE_CURRENT_DATA = true
18+
eq HAVE_FUTURE_DATA HAVE_FUTURE_DATA = true
19+
eq HAVE_ENOUGH_DATA HAVE_ENOUGH_DATA = true
20+
eq _ _ = false
21+
22+
instance ordReadyState :: Ord ReadyState where
23+
compare x y = compare (fromEnumReadyState x) (fromEnumReadyState y)
24+
25+
instance boundedReadyState :: Bounded ReadyState where
26+
bottom = HAVE_NOTHING
27+
top = HAVE_ENOUGH_DATA
28+
29+
instance boundedOrdReadyState :: BoundedOrd ReadyState
30+
31+
instance enumReadyState :: Enum ReadyState where
32+
cardinality = Cardinality 5
33+
succ = defaultSucc toEnumReadyState fromEnumReadyState
34+
pred = defaultPred toEnumReadyState fromEnumReadyState
35+
toEnum = toEnumReadyState
36+
fromEnum = fromEnumReadyState
37+
38+
toEnumReadyState :: Int -> Maybe ReadyState
39+
toEnumReadyState 0 = Just HAVE_NOTHING
40+
toEnumReadyState 1 = Just HAVE_METADATA
41+
toEnumReadyState 2 = Just HAVE_CURRENT_DATA
42+
toEnumReadyState 3 = Just HAVE_FUTURE_DATA
43+
toEnumReadyState 4 = Just HAVE_ENOUGH_DATA
44+
toEnumReadyState _ = Nothing
45+
46+
fromEnumReadyState :: ReadyState -> Int
47+
fromEnumReadyState HAVE_NOTHING = 0
48+
fromEnumReadyState HAVE_METADATA = 1
49+
fromEnumReadyState HAVE_CURRENT_DATA = 2
50+
fromEnumReadyState HAVE_FUTURE_DATA = 3
51+
fromEnumReadyState HAVE_ENOUGH_DATA = 4

src/DOM/HTML/HTMLTrackElement.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ import Data.Enum (toEnum)
88
import Data.Maybe.Unsafe as U
99

1010
import DOM (DOM())
11+
import DOM.HTML.HTMLTrackElement.ReadyState (ReadyState())
1112
import DOM.HTML.Types (HTMLTrackElement())
12-
import DOM.HTML.ReadyState (ReadyState())
1313

1414
foreign import kind :: forall eff. HTMLTrackElement -> Eff (dom :: DOM | eff) String
1515
foreign import setKind :: forall eff. String -> HTMLTrackElement -> Eff (dom :: DOM | eff) Unit

src/DOM/HTML/ReadyState.purs renamed to src/DOM/HTML/HTMLTrackElement/ReadyState.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module DOM.HTML.ReadyState (ReadyState(..)) where
1+
module DOM.HTML.HTMLTrackElement.ReadyState (ReadyState(..)) where
22

33
import Prelude
44
import Data.Maybe (Maybe(..))

src/DOM/HTML/SelectionMode.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ instance ordSelectionMode :: Ord SelectionMode where
2121
compare (SelectionMode x) (SelectionMode y) = compare x y
2222

2323
instance showSelectionMode :: Show SelectionMode where
24-
show (SelectionMode m) = "(SelectionMode " <> m <> ")"
24+
show (SelectionMode m) = "(SelectionMode " <> show m <> ")"
2525

2626
select :: SelectionMode
2727
select = SelectionMode "select"

0 commit comments

Comments
 (0)