From df7b8a48146b6202d26c8b1c6f3b0f864226b7e0 Mon Sep 17 00:00:00 2001 From: Risto Stevcev Date: Mon, 10 Oct 2016 00:56:52 +0200 Subject: [PATCH 1/8] Added some window functions and unit tests --- .gitignore | 1 + bower.json | 6 ++ src/DOM/HTML/Types.purs | 12 +++ src/DOM/HTML/Window.js | 181 ++++++++++++++++++++++++++++++++++++++ src/DOM/HTML/Window.purs | 101 ++++++++++++++++++++- test/DOM/HTML/Window.purs | 92 +++++++++++++++++++ test/Main.purs | 35 ++++++++ 7 files changed, 426 insertions(+), 2 deletions(-) create mode 100644 test/DOM/HTML/Window.purs create mode 100644 test/Main.purs diff --git a/.gitignore b/.gitignore index e306283..2e86f48 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ /bower_components/ /node_modules/ /output/ +*.tix diff --git a/bower.json b/bower.json index d2dd0b0..fc086d2 100644 --- a/bower.json +++ b/bower.json @@ -30,5 +30,11 @@ "purescript-nullable": "^1.0.0", "purescript-prelude": "^1.0.0", "purescript-unsafe-coerce": "^1.0.0" + }, + "devDependencies": { + "purescript-aff": "^1.1.0", + "purescript-test-unit": "^9.1.0", + "purescript-exitcodes": "^1.0.0", + "purescript-phantom": "^0.1.2" } } diff --git a/src/DOM/HTML/Types.purs b/src/DOM/HTML/Types.purs index f7b3ad8..b067e44 100644 --- a/src/DOM/HTML/Types.purs +++ b/src/DOM/HTML/Types.purs @@ -3,6 +3,10 @@ module DOM.HTML.Types ( Navigator , Location , Window + , ALERT + , PROMPT + , CONFIRM + , WINDOW , windowToEventTarget , HTMLDocument , htmlDocumentToDocument @@ -222,6 +226,14 @@ foreign import data Location :: * foreign import data Window :: * +foreign import data ALERT :: ! + +foreign import data PROMPT :: ! + +foreign import data CONFIRM :: ! + +foreign import data WINDOW :: ! + windowToEventTarget :: Window -> EventTarget windowToEventTarget = U.unsafeCoerce diff --git a/src/DOM/HTML/Window.js b/src/DOM/HTML/Window.js index a85b974..db40a04 100644 --- a/src/DOM/HTML/Window.js +++ b/src/DOM/HTML/Window.js @@ -29,3 +29,184 @@ exports.innerHeight = function (window) { return window.innerHeight; }; }; + +exports.alert = function(window) { + return function(str) { + return function() { + alert(str); + return {}; + } + } +} + +exports.close = function(window) { + return function() { + window.close(); + return {}; + } +} + +exports.closed = function(window) { + return function() { + return window.closed; + } +} + +exports.confirm = function(window) { + return function(str) { + return function() { + return window.confirm(str); + } + } +} + +exports.length = function(window) { + return function() { + return window.length; + } +} + +exports.minimize = function(window) { + return function() { + window.minimize(); + return {}; + } +} + +exports.moveBy = function(window) { + return function(xDelta) { + return function(yDelta) { + return function() { + window.moveBy(xDelta, yDelta); + return {}; + } + } + } +} + +exports.moveTo = function(window) { + return function(width) { + return function(height) { + return function() { + window.moveTo(width, height); + return {}; + } + } + } +} + +exports._open = function(just) { + return function(nothing) { + return function(window) { + return function(url) { + return function(name) { + return function(features) { + return function() { + var windowRef = window.open(url, name, features); + return windowRef !== null ? just(windowRef) : nothing(); + } + } + } + } + } + } +} + +exports.outerHeight = function(window) { + return function() { + return window.outerHeight; + } +} + +exports.outerWidth = function(window) { + return function() { + return window.outerWidth; + } +} + +exports.print = function(window) { + return function() { + window.print(); + return {}; + } +} + +exports._prompt = function(just) { + return function(nothing) { + return function(window) { + return function(str) { + return function() { + var response = window.prompt(str); + return response !== null ? just(response) : nothing(); + } + } + } + } +} + +exports.resizeBy = function(window) { + return function(xDelta) { + return function(yDelta) { + return function() { + window.resizeBy(xDelta, yDelta); + return {}; + } + } + } +} + +exports.resizeTo = function(window) { + return function(width) { + return function(height) { + return function() { + window.resizeTo(width, height); + return {}; + } + } + } +} + +exports.screenX = function(window) { + return function() { + return window.screenX; + } +} + +exports.screenY = function(window) { + return function() { + return window.screenY; + } +} + +exports.scroll = function(window) { + return function(xCoord) { + return function(yCoord) { + return function() { + window.scroll(xCoord, yCoord); + return {}; + } + } + } +} + +exports.scrollBy = function(window) { + return function(xCoord) { + return function(yCoord) { + return function() { + window.scrollBy(xCoord, yCoord); + return {}; + } + } + } +} + +exports.scrollX = function(window) { + return function() { + return window.scrollX; + } +} +exports.scrollY = function(window) { + return function() { + return window.scrollY; + } +} diff --git a/src/DOM/HTML/Window.purs b/src/DOM/HTML/Window.purs index fba88b4..3c92beb 100644 --- a/src/DOM/HTML/Window.purs +++ b/src/DOM/HTML/Window.purs @@ -1,8 +1,37 @@ -module DOM.HTML.Window where +module DOM.HTML.Window + ( document + , navigator + , location + , innerWidth + , innerHeight + , alert + , close + , closed + , confirm + , length + , minimize + , moveBy + , moveTo + , open + , outerHeight + , outerWidth + , print + , prompt + , resizeBy + , resizeTo + , screenX + , screenY + , scroll + , scrollBy + , scrollX + , scrollY + ) where +import Prelude (Unit) +import Data.Maybe (Maybe(..)) import Control.Monad.Eff (Eff) import DOM (DOM) -import DOM.HTML.Types (Window, Location, Navigator, HTMLDocument) +import DOM.HTML.Types (Window, Location, Navigator, HTMLDocument, ALERT, CONFIRM, PROMPT, WINDOW) foreign import document :: forall eff. Window -> Eff (dom :: DOM | eff) HTMLDocument @@ -13,3 +42,71 @@ foreign import location :: forall eff. Window -> Eff (dom :: DOM | eff) Location foreign import innerWidth :: forall eff. Window -> Eff (dom :: DOM | eff) Int foreign import innerHeight :: forall eff. Window -> Eff (dom :: DOM | eff) Int + +foreign import alert :: forall eff. Window -> String -> Eff (alert :: ALERT | eff) Unit + +foreign import close :: forall eff. Window -> Eff (window :: WINDOW | eff) Unit + +foreign import closed :: forall eff. Window -> Eff (window :: WINDOW | eff) Boolean + +foreign import confirm :: forall eff. Window -> String -> Eff (confirm :: CONFIRM | eff) Boolean + +foreign import length :: forall eff. Window -> Eff (window :: WINDOW | eff) Int + +foreign import minimize :: forall eff. Window -> Eff (window :: WINDOW | eff) Unit + +foreign import moveBy :: forall eff. Window -> Int -> Int -> Eff (window :: WINDOW | eff) Unit + +foreign import moveTo :: forall eff. Window -> Int -> Int -> Eff (window :: WINDOW | eff) Unit + +open + :: forall eff + . Window + -> String + -> String + -> String + -> Eff (window :: WINDOW | eff) (Maybe Window) +open = _open Just Nothing + +foreign import _open + :: forall eff + . (forall a. a -> Maybe a) + -> (forall a. Maybe a) + -> Window + -> String + -> String + -> String + -> Eff (window :: WINDOW | eff) (Maybe Window) + +foreign import outerHeight :: forall eff. Window -> Eff (dom :: DOM | eff) Int + +foreign import outerWidth :: forall eff. Window -> Eff (dom :: DOM | eff) Int + +foreign import print :: forall eff. Window -> Eff (window :: WINDOW | eff) Unit + +prompt :: forall eff. Window -> String -> Eff (prompt :: PROMPT | eff) (Maybe String) +prompt = _prompt Just Nothing + +foreign import _prompt + :: forall eff + . (forall a. a -> Maybe a) + -> (forall a. Maybe a) + -> Window + -> String + -> Eff (prompt :: PROMPT | eff) (Maybe String) + +foreign import resizeBy :: forall eff. Window -> Int -> Int -> Eff (window :: WINDOW | eff) Unit + +foreign import resizeTo :: forall eff. Window -> Int -> Int -> Eff (window :: WINDOW | eff) Unit + +foreign import screenX :: forall eff. Window -> Eff (dom :: DOM | eff) Int + +foreign import screenY :: forall eff. Window -> Eff (dom :: DOM | eff) Int + +foreign import scroll :: forall eff. Window -> Int -> Int -> Eff (window :: WINDOW | eff) Unit + +foreign import scrollBy :: forall eff. Window -> Int -> Int -> Eff (window :: WINDOW | eff) Unit + +foreign import scrollX :: forall eff. Window -> Eff (dom :: DOM | eff) Int + +foreign import scrollY :: forall eff. Window -> Eff (dom :: DOM | eff) Int diff --git a/test/DOM/HTML/Window.purs b/test/DOM/HTML/Window.purs new file mode 100644 index 0000000..b19be8f --- /dev/null +++ b/test/DOM/HTML/Window.purs @@ -0,0 +1,92 @@ +module Test.DOM.HTML.Window where + +import Prelude (Unit, bind, ($), (<$>), (<*>), (<<<)) +import DOM (DOM) +import DOM.HTML (window) +import DOM.HTML.Types (WINDOW) +import DOM.HTML.Window +import Control.Monad.Free (Free) +import Control.Monad.Aff (Aff) +import Control.Monad.Aff.Console (CONSOLE) +import Control.Monad.Eff (Eff) +import Control.Monad.Eff.Class (liftEff) as EffClass +import Test.Unit (TestF, describe, it) +import Test.Unit.Assert (shouldEqual) +import Data.Maybe (isJust, fromJust) +import Data.Traversable (class Traversable, sequence) +import Partial.Unsafe (unsafePartial) + + +liftEff :: forall eff a. Eff eff a -> Aff eff a +liftEff = EffClass.liftEff + +liftSeq :: forall eff m a. Traversable m => m (Eff eff a) -> Aff eff (m a) +liftSeq = liftEff <<< sequence + +domHtmlWindowTests + :: forall eff. Free (TestF (dom :: DOM, console :: CONSOLE, window :: WINDOW | eff)) Unit +domHtmlWindowTests = do + describe "innerHeight" do + it "should return the default inner height" do + windowHeight <- liftEff do + window' <- window + innerHeight window' + windowHeight `shouldEqual` 300 + + describe "innerWidth" do + it "should return the default inner width" do + windowWidth <- liftEff do + window' <- window + innerWidth window' + windowWidth `shouldEqual` 400 + + describe "screenX" do + it "should get the X coordinate of the window" do + x <- liftEff do + window' <- window + screenX window' + x `shouldEqual` 0 + + describe "screenY" do + it "should get the Y coordinate of the window" do + y <- liftEff do + window' <- window + screenY window' + y `shouldEqual` 0 + + describe "closed" do + it "should return whether or not the window is closed" do + isClosed <- liftEff do + window' <- window + closed window' + isClosed `shouldEqual` false + + describe "open" do + it "should open a new window" do + newWindow' <- liftEff do + window' <- window + open window' "about:blank" "foobar" "" + isJust newWindow' `shouldEqual` true + + describe "close" do + it "should close the window" do + newWindow' <- liftEff do + window' <- window + open window' "about:blank" "foobar" "" + isJust newWindow' `shouldEqual` true + let newWindow = unsafePartial $ fromJust newWindow' + + isClosed <- liftEff $ closed newWindow + isClosed `shouldEqual` false + + liftEff $ close newWindow + + isClosed' <- liftEff $ closed newWindow + isClosed' `shouldEqual` false + + describe "length" do + it "should return the default number of frames in the window" do + numFrames <- liftEff do + window' <- window + length window' + numFrames `shouldEqual` 0 diff --git a/test/Main.purs b/test/Main.purs new file mode 100644 index 0000000..83a4920 --- /dev/null +++ b/test/Main.purs @@ -0,0 +1,35 @@ +module Test.Main where + +import Prelude (($), bind) +import DOM (DOM) +import DOM.HTML.Types (WINDOW) +import Data.Enum (fromEnum) +import ExitCodes (ExitCode(Success)) +import PhantomJS.Phantom (exit, PHANTOMJS) +import Control.Monad.Aff (Aff, launchAff, Canceler) +import Control.Monad.Eff.Class (liftEff) as EffClass +import Control.Monad.Aff.AVar (AVAR) +import Control.Monad.Eff (Eff) +import Control.Monad.Eff.Console (CONSOLE) +import Control.Monad.Eff.Exception (EXCEPTION) +import Test.Unit (describe, it) +import Test.Unit.Assert (assert) +import Test.Unit.Output.Simple (runTest) +import Test.DOM.HTML.Window (domHtmlWindowTests) + + +liftEff :: forall eff a. Eff (phantomjs :: PHANTOMJS | eff) a -> Aff (phantomjs :: PHANTOMJS | eff) a +liftEff = EffClass.liftEff + + +main + :: forall eff + . Eff (err :: EXCEPTION, console :: CONSOLE, avar :: AVAR, dom :: DOM, window :: WINDOW, phantomjs :: PHANTOMJS | eff) + (Canceler (console :: CONSOLE, avar :: AVAR, dom :: DOM, window :: WINDOW, phantomjs :: PHANTOMJS | eff)) +main = launchAff $ runTest do + domHtmlWindowTests + + describe "exit" $ do + it "should exit" $ do + liftEff $ exit (fromEnum Success) + assert "failed to exit phantomjs" false From 2b8b4edf7cbc2314b82727e07b9250fed156b089 Mon Sep 17 00:00:00 2001 From: Risto Stevcev Date: Mon, 10 Oct 2016 01:01:01 +0200 Subject: [PATCH 2/8] Added phantomjs dev dependency --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index ed9052a..8a7cc86 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "devDependencies": { "jscs": "^3.0.7", "jshint": "^2.9.2", + "phantomjs-prebuilt": "^2.1.13", "pulp": "^9.0.1", "purescript-psa": "^0.3.9", "rimraf": "^2.5.4" From f9bbd37a32f240655b96b1027b04465a948a9a0c Mon Sep 17 00:00:00 2001 From: Risto Stevcev Date: Sat, 22 Oct 2016 17:01:38 +0200 Subject: [PATCH 3/8] Added explicit semicolons --- src/DOM/HTML/Window.js | 131 +++++++++++++++++++++-------------------- 1 file changed, 66 insertions(+), 65 deletions(-) diff --git a/src/DOM/HTML/Window.js b/src/DOM/HTML/Window.js index db40a04..26a0c63 100644 --- a/src/DOM/HTML/Window.js +++ b/src/DOM/HTML/Window.js @@ -33,45 +33,45 @@ exports.innerHeight = function (window) { exports.alert = function(window) { return function(str) { return function() { - alert(str); + window.alert(str); return {}; - } - } -} + }; + }; +}; exports.close = function(window) { return function() { window.close(); return {}; - } -} + }; +}; exports.closed = function(window) { return function() { return window.closed; - } -} + }; +}; exports.confirm = function(window) { return function(str) { return function() { return window.confirm(str); - } - } -} + }; + }; +}; exports.length = function(window) { return function() { return window.length; - } -} + }; +}; exports.minimize = function(window) { return function() { window.minimize(); return {}; - } -} + }; +}; exports.moveBy = function(window) { return function(xDelta) { @@ -79,10 +79,10 @@ exports.moveBy = function(window) { return function() { window.moveBy(xDelta, yDelta); return {}; - } - } - } -} + }; + }; + }; +}; exports.moveTo = function(window) { return function(width) { @@ -90,10 +90,10 @@ exports.moveTo = function(window) { return function() { window.moveTo(width, height); return {}; - } - } - } -} + }; + }; + }; +}; exports._open = function(just) { return function(nothing) { @@ -104,32 +104,32 @@ exports._open = function(just) { return function() { var windowRef = window.open(url, name, features); return windowRef !== null ? just(windowRef) : nothing(); - } - } - } - } - } - } -} + }; + }; + }; + }; + }; + }; +}; exports.outerHeight = function(window) { return function() { return window.outerHeight; - } -} + }; +}; exports.outerWidth = function(window) { return function() { return window.outerWidth; - } -} + }; +}; exports.print = function(window) { return function() { window.print(); return {}; - } -} + }; +}; exports._prompt = function(just) { return function(nothing) { @@ -138,11 +138,11 @@ exports._prompt = function(just) { return function() { var response = window.prompt(str); return response !== null ? just(response) : nothing(); - } - } - } - } -} + }; + }; + }; + }; +}; exports.resizeBy = function(window) { return function(xDelta) { @@ -150,10 +150,10 @@ exports.resizeBy = function(window) { return function() { window.resizeBy(xDelta, yDelta); return {}; - } - } - } -} + }; + }; + }; +}; exports.resizeTo = function(window) { return function(width) { @@ -161,22 +161,22 @@ exports.resizeTo = function(window) { return function() { window.resizeTo(width, height); return {}; - } - } - } -} + }; + }; + }; +}; exports.screenX = function(window) { return function() { return window.screenX; - } -} + }; +}; exports.screenY = function(window) { return function() { return window.screenY; - } -} + }; +}; exports.scroll = function(window) { return function(xCoord) { @@ -184,10 +184,10 @@ exports.scroll = function(window) { return function() { window.scroll(xCoord, yCoord); return {}; - } - } - } -} + }; + }; + }; +}; exports.scrollBy = function(window) { return function(xCoord) { @@ -195,18 +195,19 @@ exports.scrollBy = function(window) { return function() { window.scrollBy(xCoord, yCoord); return {}; - } - } - } -} + }; + }; + }; +}; exports.scrollX = function(window) { return function() { return window.scrollX; - } -} + }; +}; + exports.scrollY = function(window) { return function() { return window.scrollY; - } -} + }; +}; From e725ccaa0df38a2763817b94ae2b7dd105e75f77 Mon Sep 17 00:00:00 2001 From: Risto Stevcev Date: Sat, 22 Oct 2016 20:20:45 +0200 Subject: [PATCH 4/8] Added back bumped version of Aff --- bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bower.json b/bower.json index f6390de..19fd304 100644 --- a/bower.json +++ b/bower.json @@ -32,7 +32,7 @@ "purescript-unsafe-coerce": "^2.0.0" }, "devDependencies": { - "purescript-aff": "^1.1.0", + "purescript-aff": "^2.0.0", "purescript-test-unit": "^9.1.0", "purescript-exitcodes": "^1.0.0", "purescript-phantom": "^0.1.2" From 189ff7f36f177fb71916834a254fae6c2135ac02 Mon Sep 17 00:00:00 2001 From: Risto Stevcev Date: Sat, 22 Oct 2016 22:21:28 +0200 Subject: [PATCH 5/8] Bumped devDependency versions and removed some unused imports --- bower.json | 6 +++--- test/DOM/HTML/Window.purs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bower.json b/bower.json index 19fd304..2fa8536 100644 --- a/bower.json +++ b/bower.json @@ -33,8 +33,8 @@ }, "devDependencies": { "purescript-aff": "^2.0.0", - "purescript-test-unit": "^9.1.0", - "purescript-exitcodes": "^1.0.0", - "purescript-phantom": "^0.1.2" + "purescript-test-unit": "^10.0.0", + "purescript-exitcodes": "^2.0.0", + "purescript-phantom": "^1.0.1" } } diff --git a/test/DOM/HTML/Window.purs b/test/DOM/HTML/Window.purs index b19be8f..74fc35f 100644 --- a/test/DOM/HTML/Window.purs +++ b/test/DOM/HTML/Window.purs @@ -1,6 +1,6 @@ module Test.DOM.HTML.Window where -import Prelude (Unit, bind, ($), (<$>), (<*>), (<<<)) +import Prelude (Unit, bind, ($), (<<<)) import DOM (DOM) import DOM.HTML (window) import DOM.HTML.Types (WINDOW) From 14b1660d29ac691e587cf90436075643d58706ea Mon Sep 17 00:00:00 2001 From: Risto Stevcev Date: Sat, 22 Oct 2016 22:27:07 +0200 Subject: [PATCH 6/8] Updated style for jshint --- src/DOM/HTML/Window.js | 128 ++++++++++++++++++++--------------------- 1 file changed, 64 insertions(+), 64 deletions(-) diff --git a/src/DOM/HTML/Window.js b/src/DOM/HTML/Window.js index 26a0c63..990db7d 100644 --- a/src/DOM/HTML/Window.js +++ b/src/DOM/HTML/Window.js @@ -30,53 +30,53 @@ exports.innerHeight = function (window) { }; }; -exports.alert = function(window) { - return function(str) { - return function() { +exports.alert = function (window) { + return function (str) { + return function () { window.alert(str); return {}; }; }; }; -exports.close = function(window) { - return function() { +exports.close = function (window) { + return function () { window.close(); return {}; }; }; -exports.closed = function(window) { - return function() { +exports.closed = function (window) { + return function () { return window.closed; }; }; -exports.confirm = function(window) { - return function(str) { - return function() { +exports.confirm = function (window) { + return function (str) { + return function () { return window.confirm(str); }; }; }; -exports.length = function(window) { - return function() { +exports.length = function (window) { + return function () { return window.length; }; }; -exports.minimize = function(window) { - return function() { +exports.minimize = function (window) { + return function () { window.minimize(); return {}; }; }; -exports.moveBy = function(window) { - return function(xDelta) { - return function(yDelta) { - return function() { +exports.moveBy = function (window) { + return function (xDelta) { + return function (yDelta) { + return function () { window.moveBy(xDelta, yDelta); return {}; }; @@ -84,10 +84,10 @@ exports.moveBy = function(window) { }; }; -exports.moveTo = function(window) { - return function(width) { - return function(height) { - return function() { +exports.moveTo = function (window) { + return function (width) { + return function (height) { + return function () { window.moveTo(width, height); return {}; }; @@ -95,13 +95,13 @@ exports.moveTo = function(window) { }; }; -exports._open = function(just) { - return function(nothing) { - return function(window) { - return function(url) { - return function(name) { - return function(features) { - return function() { +exports._open = function (just) { + return function (nothing) { + return function (window) { + return function (url) { + return function (name) { + return function (features) { + return function () { var windowRef = window.open(url, name, features); return windowRef !== null ? just(windowRef) : nothing(); }; @@ -112,30 +112,30 @@ exports._open = function(just) { }; }; -exports.outerHeight = function(window) { - return function() { +exports.outerHeight = function (window) { + return function () { return window.outerHeight; }; }; -exports.outerWidth = function(window) { - return function() { +exports.outerWidth = function (window) { + return function () { return window.outerWidth; }; }; -exports.print = function(window) { - return function() { +exports.print = function (window) { + return function () { window.print(); return {}; }; }; -exports._prompt = function(just) { - return function(nothing) { - return function(window) { - return function(str) { - return function() { +exports._prompt = function (just) { + return function (nothing) { + return function (window) { + return function (str) { + return function () { var response = window.prompt(str); return response !== null ? just(response) : nothing(); }; @@ -144,10 +144,10 @@ exports._prompt = function(just) { }; }; -exports.resizeBy = function(window) { - return function(xDelta) { - return function(yDelta) { - return function() { +exports.resizeBy = function (window) { + return function (xDelta) { + return function (yDelta) { + return function () { window.resizeBy(xDelta, yDelta); return {}; }; @@ -155,10 +155,10 @@ exports.resizeBy = function(window) { }; }; -exports.resizeTo = function(window) { - return function(width) { - return function(height) { - return function() { +exports.resizeTo = function (window) { + return function (width) { + return function (height) { + return function () { window.resizeTo(width, height); return {}; }; @@ -166,22 +166,22 @@ exports.resizeTo = function(window) { }; }; -exports.screenX = function(window) { - return function() { +exports.screenX = function (window) { + return function () { return window.screenX; }; }; -exports.screenY = function(window) { - return function() { +exports.screenY = function (window) { + return function () { return window.screenY; }; }; -exports.scroll = function(window) { - return function(xCoord) { - return function(yCoord) { - return function() { +exports.scroll = function (window) { + return function (xCoord) { + return function (yCoord) { + return function () { window.scroll(xCoord, yCoord); return {}; }; @@ -189,10 +189,10 @@ exports.scroll = function(window) { }; }; -exports.scrollBy = function(window) { - return function(xCoord) { - return function(yCoord) { - return function() { +exports.scrollBy = function (window) { + return function (xCoord) { + return function (yCoord) { + return function () { window.scrollBy(xCoord, yCoord); return {}; }; @@ -200,14 +200,14 @@ exports.scrollBy = function(window) { }; }; -exports.scrollX = function(window) { - return function() { +exports.scrollX = function (window) { + return function () { return window.scrollX; }; }; -exports.scrollY = function(window) { - return function() { +exports.scrollY = function (window) { + return function () { return window.scrollY; }; }; From eb5dd7c2958cbe72794314361d014c67b9dfa45e Mon Sep 17 00:00:00 2001 From: Risto Stevcev Date: Sun, 23 Oct 2016 17:18:35 +0200 Subject: [PATCH 7/8] Removed unused constructors --- src/DOM/HTML/Window.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DOM/HTML/Window.purs b/src/DOM/HTML/Window.purs index acb5129..d5774ad 100644 --- a/src/DOM/HTML/Window.purs +++ b/src/DOM/HTML/Window.purs @@ -24,7 +24,7 @@ module DOM.HTML.Window ) where import Prelude (Unit, (<$>)) -import Data.Maybe (Maybe(..)) +import Data.Maybe (Maybe) import Data.Nullable (Nullable, toMaybe) import Control.Monad.Eff (Eff) import DOM (DOM) From fa45592e4833b03fdc393b5b048257d0b758942b Mon Sep 17 00:00:00 2001 From: Risto Stevcev Date: Sun, 23 Oct 2016 18:17:29 +0200 Subject: [PATCH 8/8] Updated order of the function params --- src/DOM/HTML/Window.js | 56 +++++++++++++++++++-------------------- src/DOM/HTML/Window.purs | 26 +++++++++--------- test/DOM/HTML/Window.purs | 2 +- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/src/DOM/HTML/Window.js b/src/DOM/HTML/Window.js index fa04b82..957f597 100644 --- a/src/DOM/HTML/Window.js +++ b/src/DOM/HTML/Window.js @@ -30,8 +30,8 @@ exports.innerHeight = function (window) { }; }; -exports.alert = function (window) { - return function (str) { +exports.alert = function (str) { + return function (window) { return function () { window.alert(str); return {}; @@ -39,17 +39,17 @@ exports.alert = function (window) { }; }; -exports.confirm = function (window) { - return function (str) { +exports.confirm = function (str) { + return function (window) { return function () { return window.confirm(str); }; }; }; -exports.moveBy = function (window) { - return function (xDelta) { - return function (yDelta) { +exports.moveBy = function (xDelta) { + return function (yDelta) { + return function (window) { return function () { window.moveBy(xDelta, yDelta); return {}; @@ -58,9 +58,9 @@ exports.moveBy = function (window) { }; }; -exports.moveTo = function (window) { - return function (width) { - return function (height) { +exports.moveTo = function (width) { + return function (height) { + return function (window) { return function () { window.moveTo(width, height); return {}; @@ -69,10 +69,10 @@ exports.moveTo = function (window) { }; }; -exports._open = function (window) { - return function (url) { - return function (name) { - return function (features) { +exports._open = function (url) { + return function (name) { + return function (features) { + return function (window) { return function () { return window.open(url, name, features); }; @@ -100,17 +100,17 @@ exports.print = function (window) { }; }; -exports._prompt = function (window) { - return function (str) { +exports._prompt = function (str) { + return function (window) { return function () { return window.prompt(str); }; }; }; -exports.resizeBy = function (window) { - return function (xDelta) { - return function (yDelta) { +exports.resizeBy = function (xDelta) { + return function (yDelta) { + return function (window) { return function () { window.resizeBy(xDelta, yDelta); return {}; @@ -119,9 +119,9 @@ exports.resizeBy = function (window) { }; }; -exports.resizeTo = function (window) { - return function (width) { - return function (height) { +exports.resizeTo = function (width) { + return function (height) { + return function (window) { return function () { window.resizeTo(width, height); return {}; @@ -142,9 +142,9 @@ exports.screenY = function (window) { }; }; -exports.scroll = function (window) { - return function (xCoord) { - return function (yCoord) { +exports.scroll = function (xCoord) { + return function (yCoord) { + return function (window) { return function () { window.scroll(xCoord, yCoord); return {}; @@ -153,9 +153,9 @@ exports.scroll = function (window) { }; }; -exports.scrollBy = function (window) { - return function (xCoord) { - return function (yCoord) { +exports.scrollBy = function (xCoord) { + return function (yCoord) { + return function (window) { return function () { window.scrollBy(xCoord, yCoord); return {}; diff --git a/src/DOM/HTML/Window.purs b/src/DOM/HTML/Window.purs index d5774ad..2365b0b 100644 --- a/src/DOM/HTML/Window.purs +++ b/src/DOM/HTML/Window.purs @@ -40,23 +40,23 @@ foreign import innerWidth :: forall eff. Window -> Eff (dom :: DOM | eff) Int foreign import innerHeight :: forall eff. Window -> Eff (dom :: DOM | eff) Int -foreign import alert :: forall eff. Window -> String -> Eff (alert :: ALERT | eff) Unit +foreign import alert :: forall eff. String -> Window -> Eff (alert :: ALERT | eff) Unit -foreign import confirm :: forall eff. Window -> String -> Eff (confirm :: CONFIRM | eff) Boolean +foreign import confirm :: forall eff. String -> Window -> Eff (confirm :: CONFIRM | eff) Boolean -foreign import moveBy :: forall eff. Window -> Int -> Int -> Eff (window :: WINDOW | eff) Unit +foreign import moveBy :: forall eff. Int -> Int -> Window -> Eff (window :: WINDOW | eff) Unit -foreign import moveTo :: forall eff. Window -> Int -> Int -> Eff (window :: WINDOW | eff) Unit +foreign import moveTo :: forall eff. Int -> Int -> Window -> Eff (window :: WINDOW | eff) Unit -open :: forall eff. Window -> String -> String -> String -> Eff (window :: WINDOW | eff) (Maybe Window) +open :: forall eff. String -> String -> String -> Window -> Eff (window :: WINDOW | eff) (Maybe Window) open window url name features = toMaybe <$> _open window url name features foreign import _open :: forall eff - . Window - -> String + . String -> String -> String + -> Window -> Eff (window :: WINDOW | eff) (Nullable Window) foreign import outerHeight :: forall eff. Window -> Eff (dom :: DOM | eff) Int @@ -65,22 +65,22 @@ foreign import outerWidth :: forall eff. Window -> Eff (dom :: DOM | eff) Int foreign import print :: forall eff. Window -> Eff (window :: WINDOW | eff) Unit -prompt :: forall eff. Window -> String -> Eff (prompt :: PROMPT | eff) (Maybe String) +prompt :: forall eff. String -> Window -> Eff (prompt :: PROMPT | eff) (Maybe String) prompt window msg = toMaybe <$> _prompt window msg -foreign import _prompt :: forall eff. Window -> String -> Eff (prompt :: PROMPT | eff) (Nullable String) +foreign import _prompt :: forall eff. String -> Window -> Eff (prompt :: PROMPT | eff) (Nullable String) -foreign import resizeBy :: forall eff. Window -> Int -> Int -> Eff (window :: WINDOW | eff) Unit +foreign import resizeBy :: forall eff. Int -> Int -> Window -> Eff (window :: WINDOW | eff) Unit -foreign import resizeTo :: forall eff. Window -> Int -> Int -> Eff (window :: WINDOW | eff) Unit +foreign import resizeTo :: forall eff. Int -> Int -> Window -> Eff (window :: WINDOW | eff) Unit foreign import screenX :: forall eff. Window -> Eff (dom :: DOM | eff) Int foreign import screenY :: forall eff. Window -> Eff (dom :: DOM | eff) Int -foreign import scroll :: forall eff. Window -> Int -> Int -> Eff (window :: WINDOW | eff) Unit +foreign import scroll :: forall eff. Int -> Int -> Window -> Eff (window :: WINDOW | eff) Unit -foreign import scrollBy :: forall eff. Window -> Int -> Int -> Eff (window :: WINDOW | eff) Unit +foreign import scrollBy :: forall eff. Int -> Int -> Window -> Eff (window :: WINDOW | eff) Unit foreign import scrollX :: forall eff. Window -> Eff (dom :: DOM | eff) Int diff --git a/test/DOM/HTML/Window.purs b/test/DOM/HTML/Window.purs index e1cc60b..9bb6a11 100644 --- a/test/DOM/HTML/Window.purs +++ b/test/DOM/HTML/Window.purs @@ -57,5 +57,5 @@ domHtmlWindowTests = do it "should open a new window" do newWindow' <- liftEff do window' <- window - open window' "about:blank" "foobar" "" + open "about:blank" "foobar" "" window' isJust newWindow' `shouldEqual` true