purview 0.2.0.1 → 0.2.0.2
raw patch · 2 files changed
+1/−137 lines, 2 filesdep −criterion
Dependencies removed: criterion
Files
- performance/Criterion.hs +0/−109
- purview.cabal +1/−28
− performance/Criterion.hs
@@ -1,109 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE NamedFieldPuns #-}-{-# LANGUAGE DuplicateRecordFields #-}-{-# LANGUAGE TemplateHaskell #-}-module Criterion where--import Prelude hiding (div)-import Data.Aeson-import Data.Aeson.TH--import Criterion.Main hiding (component)--import Purview-import EventHandling-import PrepareTree (prepareTree)-import Control.Concurrent.STM (newTChan)--{---Using the todo example since it's big---}--input = Html "input"-ul = Html "ul"-li = Html "li"--nameAttr = Attribute . Generic "name"-typeAttr = Attribute . Generic "type"-checkedAttr = Attribute . Generic "checked"--data Fields = Fields { description :: String }-data Actions = Submit Fields | Toggle Int--data Todo = Todo { description :: String, done :: Bool }- deriving (Eq)--$(deriveJSON defaultOptions ''Fields)-$(deriveJSON defaultOptions ''Actions)-$(deriveJSON defaultOptions ''Todo)--handler = effectHandler [] action- where- -- hmm, a little ungainly having to specify- -- action :: Actions -> [Todo] -> IO ([Todo], [DirectedEvent Actions Actions])-- action (Submit Fields { description }) todos = pure $- (const $ todos <> [Todo { description=description, done=False }], [])-- action (Toggle n) todos =- let change (index, todo@Todo { done=alreadyDone }) =- if index == n- then todo { done=not alreadyDone }- else todo- in pure (const $ fmap change (zip [0..] todos), [])--topStyle = style "font-family: sans-serif"--todoItem (index, Todo { description, done }) = div- [ text description- , onClick (Toggle index)- $ typeAttr "checkbox"- $ (if done then checkedAttr "checked" else id)- $ input []- ]---- overall view-container = style "font-size: 24px" . div--view todos = container- [ div $ fmap todoItem (zip [0..] todos)- , formHandler $ const addNewTodoForm- ]---- submission form-submitButton = typeAttr "submit" $ button [ text "submit" ]--defaultFields = Fields { description="" }--formHandler = effectHandler ([] :: [String]) action- where- action newTodo state = pure (const state, [Parent (Submit newTodo)])--addNewTodoForm =- div- [ onSubmit defaultFields $- form- [ nameAttr "description" $ input []- , submitButton- ]- ]--component' :: Purview () b IO-component' = handler view--clickEvent = FromEvent { event="click", message="up", location=Nothing }--newStateEvent = FromEvent { event="newState", message="up", location=Nothing }--main = defaultMain- [ bgroup "render"- [ bench "todo example" $ whnf render component' ]- , bgroup "prepareTree"- [ bench "todo example" $ whnf prepareTree component' ]- , bgroup "apply event"- [ bench "todo example" $ whnf (runEvent clickEvent) component' ]- , bgroup "new state event"- [ bench "todo example" $ whnf (applyNewState clickEvent) component' ]- ]
purview.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: purview-version: 0.2.0.1+version: 0.2.0.2 synopsis: A simple, fun way to build websites description: A simple, fun way to build websites with Haskell. .@@ -128,31 +128,4 @@ , wai-websockets >=3.0.1 && <3.1 , warp >=3.3.0 && <3.4 , websockets ==0.12.*- default-language: Haskell2010--benchmark purview-perf-test- type: exitcode-stdio-1.0- main-is: Criterion.hs- other-modules:- Paths_purview- hs-source-dirs:- performance- ghc-options: -main-is Criterion- build-depends:- aeson >=1.5.6 && <2.3- , base >=4.7 && <5- , blaze-builder >=0.4.2 && <0.5- , bytestring >=0.10.12.0 && <0.13- , criterion >=1.5.13 && <1.6- , http-types >=0.12.3 && <0.13- , purview- , raw-strings-qq ==1.1.*- , stm >=2.5.0 && <2.6- , template-haskell >=2.15.0 && <2.21- , text >=1.2.4.1 && <2.2- , wai >=3.2.0 && <3.3- , wai-websockets >=3.0.1 && <3.1- , warp >=3.3.0 && <3.4- , websockets ==0.12.*- buildable: False default-language: Haskell2010