$forall cell <- row
#{show cell}
|]
-bigTableHamlet rows = L.length $ renderHamlet id [$hamlet|
-
$forall row <- rows
-
$forall cell <- row
#{show cell}
|]
-bigTableWidget rows = L.length $ renderHtml $ (run [$hamlet|
-
$forall row <- rows
-
$forall cell <- row
| #{show cell}
-|]) (\_ _ -> "foo")
+|])
where
- run (GWidget w) =
- let (_, _, GWData (Body x) _ _ _ _ _ _) = runRWS w () 0
- in x
- {-
- run (GWidget w) = runIdentity $ do
- w' <- flip evalStateT 0
- $ runWriterT $ runWriterT $ runWriterT $ runWriterT
- $ runWriterT $ runWriterT $ runWriterT w
- let ((((((((),
- Body body),
- _),
- _),
- _),
- _),
- _),
- _) = w'
+ render _ _ = "foo"
+ run (WidgetT w) = do
+ (_, GWData { gwdBody = Body x }) <- w undefined
+ return x
- return body
- -}
-
-bigTableBlaze t = L.length $ renderHtml $ table $ mconcat $ map row t
+bigTableBlaze t = L.length $ Utf8.renderHtml $ table $ mconcat $ map row t
where
- row r = tr $ mconcat $ map (td . string . show) r
+ row r = tr $ mconcat $ map (td . toHtml . show) r
diff --git a/yesod-core/yesod-core.cabal b/yesod-core/yesod-core.cabal
index 80467d19..557362d8 100644
--- a/yesod-core/yesod-core.cabal
+++ b/yesod-core/yesod-core.cabal
@@ -125,6 +125,20 @@ test-suite tests
ghc-options: -Wall
extensions: TemplateHaskell
+benchmark widgets
+ type: exitcode-stdio-1.0
+ hs-source-dirs: bench
+ build-depends: base
+ , criterion
+ , bytestring
+ , text
+ , hamlet
+ , transformers
+ , yesod-core
+ , blaze-html
+ main-is: widget.hs
+ ghc-options: -Wall -O2
+
source-repository head
type: git
location: https://github.com/yesodweb/yesod
| | |