Skip to content

Instantly share code, notes, and snippets.

{-# LANGUAGE OverloadedStrings #-}
module Main where
import Numeric
import Data.Bits
import Data.List
import Text.Blaze
import Text.Blaze.Html5 hiding (map)
import qualified Text.Blaze.Html5 as H
import qualified Text.Blaze.Html5.Attributes as A
bindStrict :: Monad m => Splice m
bindStrict = do
node <- getParamNode
cs <- runChildren
maybe (return ()) (add cs)
(X.getAttribute bindAttr node)
return []
where
add cs nm = modifyTS $ bindSplice nm $ do
@mightybyte
mightybyte / Lensed.hs
Created August 12, 2011 14:29
Lensed
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
module Snap.Snaplet.Internal.Lensed where
import Control.Applicative
import Control.Monad
import Control.Monad.Trans
import Data.Lens.Lazy
import Data.Functor
@mightybyte
mightybyte / gist:1243114
Created September 26, 2011 19:19
MonadSnapletState
class Monad m => MonadSnapletState s m | m -> s where
getSnapletState :: m (Snaplet s)
putSnapletState :: (Snaplet s) -> m ()
modifySnapletState :: (MonadSnapletState s m) => (Snaplet s -> Snaplet s) -> m ()
modifySnapletState f = do
s <- getSnapletState
putSnapletState (f s)
@mightybyte
mightybyte / MongoDB.hs
Created April 9, 2012 22:18
Snap.Snaplet.Auth.Backends.MongoDB
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
module Snap.Snaplet.Auth.Backends.MongoDB
( initMongoAuth
) where
------------------------------------------------------------------------------
import Control.Arrow
routes = [ ("login", with auth loginHandler)
, ("register", with auth registerHandler)
, ("logout", with auth logout >> redirect ".")
]
passParam paramName = maybe pass return =<< getParam paramName
loginHandler = do
username <- passParam "username"
password <- passParam "password"
Process: ghc [64219]
Path: /usr/local/Cellar/ghc/7.4.2/lib/ghc-7.4.2/ghc
Identifier: ghc
Version: ??? (???)
Code Type: X86-64 (Native)
Parent Process: bash [63980]
Date/Time: 2012-06-12 22:28:34.143 -0400
OS Version: Mac OS X 10.6.8 (10K549)
Report Version: 6
createUser :: Text -- ^ Username
-> ByteString -- ^ Password
-> Handler b (AuthManager b) (Either String AuthUser)
createUser "" _ = return $ Left "Username cannot be empty"
createUser unm pwd = withBackend $ \r -> do
u <- liftIO $ buildAuthUser r unm pwd
return $ Right u
@mightybyte
mightybyte / first.hs
Created October 1, 2012 14:11 — forked from adinapoli/first.hs
First attempt
loginUser
:: ByteString
-- ^ Username field
-> ByteString
-- ^ Password field
-> Maybe ByteString
-- ^ Remember field; Nothing if you want no remember function.
-> (AuthFailure -> Handler b (AuthManager b) ())
-- ^ Upon failure
-> Handler b (AuthManager b) ()
@mightybyte
mightybyte / MonadPostgres.hs
Created March 16, 2013 00:59
Another attempt at formulating MonadPostgres
class MonadIO m => MonadPostgres m where
withConn :: (P.Connection -> m a) -> m a
getPooler :: m ((P.Connection -> m a) -> m a)
withPool :: (P.Connection -> m a) -> m a
withPool f = do
pooler <- getPooler
pooler f