aboutsummaryrefslogtreecommitdiff
path: root/js/Main.purs
diff options
context:
space:
mode:
authorJoris2017-05-10 10:29:30 +0200
committerJoris2017-05-10 10:29:30 +0200
commit4399097564c041838140225f30dcda7f92caa88a (patch)
tree9aa1176ac972cc138a530c3e785146ddaaf01056 /js/Main.purs
parent851b14df862eaeed3a8d783630f5e45ef22c5c7f (diff)
downloadcooking-4399097564c041838140225f30dcda7f92caa88a.tar.gz
cooking-4399097564c041838140225f30dcda7f92caa88a.tar.bz2
cooking-4399097564c041838140225f30dcda7f92caa88a.zip
Add tests for purescript number and parser utilities
Diffstat (limited to 'js/Main.purs')
-rw-r--r--js/Main.purs56
1 files changed, 0 insertions, 56 deletions
diff --git a/js/Main.purs b/js/Main.purs
deleted file mode 100644
index 062eb1d..0000000
--- a/js/Main.purs
+++ /dev/null
@@ -1,56 +0,0 @@
-module Main (main) where
-
-import Control.Monad.Eff (Eff)
-import Data.Array (catMaybes) as Array
-import Data.Maybe (Maybe(..))
-import Data.Traversable (sequence, sequence_) as Traversable
-import DOM (DOM)
-import DOM.Node.ParentNode (QuerySelector(..))
-import DOM.Node.Types (Node)
-import DOM.Node.Types (elementToNode) as DOM
-import Prelude
-
-import Dom (selectElement, selectElementsFrom, onInput, setValue, selectElementFrom) as Dom
-import EditableNumber (NumberElem)
-import EditableNumber (set, formatNumber) as EditableNumber
-import Parser (number) as Parser
-
-main :: forall e. Eff (dom :: DOM | e) Unit
-main = do
- tagElems <- getNumberElements
- numberElems <- Array.catMaybes <$> (Traversable.sequence $ map EditableNumber.set tagElems)
- Traversable.sequence_ $ map (onInput numberElems) numberElems
-
-getNumberElements :: forall e. Eff (dom :: DOM | e) (Array { tag :: String, node :: Node })
-getNumberElements = do
- h2 <- (map (\elem -> { tag: "h2", node: DOM.elementToNode elem})) <$> Dom.selectElement (QuerySelector "h2")
- ul <- Dom.selectElement (QuerySelector "ul")
- lis <- case ul of
- Just elem -> do
- myLis <- Dom.selectElementsFrom elem (QuerySelector "li")
- pure $ map (\node -> { tag: "li", node: node }) myLis
- _ -> do
- pure []
- pure $ (maybeToArray h2 <> lis)
-
-onInput :: forall e. Array NumberElem -> NumberElem -> Eff (dom :: DOM | e) Unit
-onInput numberElems { elem, number } = do
- Dom.onInput elem (\value -> do
- case Parser.number value of
- Just newNumber ->
- let mul = newNumber / number
- in numberElems
- # map (\ne -> do
- inputNode <- Dom.selectElementFrom ne.elem (QuerySelector "input")
- case inputNode of
- Just node -> Dom.setValue (EditableNumber.formatNumber (ne.number * mul)) node
- _ -> pure unit
- )
- # Traversable.sequence_
- _ ->
- pure unit
- )
-
-maybeToArray :: forall a. Maybe a -> Array a
-maybeToArray (Just x) = [ x ]
-maybeToArray _ = []