From 4399097564c041838140225f30dcda7f92caa88a Mon Sep 17 00:00:00 2001 From: Joris Date: Wed, 10 May 2017 10:29:30 +0200 Subject: Add tests for purescript number and parser utilities --- js/Main.purs | 56 -------------------------------------------------------- 1 file changed, 56 deletions(-) delete mode 100644 js/Main.purs (limited to 'js/Main.purs') 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 _ = [] -- cgit v1.2.3