module Yesod.Pure ( module Yesod , module Yesod.Pure ) where import Yesod import Data.Text (Text) import Data.Text.Lazy.Builder (fromText) import System.Log.FastLogger (Logger) type RouteParse master = [Text] -> Maybe (Route master) type RouteDispatch master = Text -> Route master -> Maybe (GHandler master master ChooseRep) handler :: HasReps a => GHandler sub master a -> Maybe (GHandler sub master ChooseRep) handler = Just . fmap chooseRep dispatch :: (YesodDispatch master master, Yesod master) => RouteParse master -> RouteDispatch master -> Logger -> master -> master -> (Route master -> Route master) -> (Maybe (SessionBackend master) -> Application) -> (Route master -> Maybe (SessionBackend master) -> Application) -> Text -> [Text] -> Maybe (SessionBackend master) -> Application dispatch parse dispatch' logger master sub toMaster on404 on405 method pieces session = case parse pieces of Just route -> case dispatch' method route of Just h -> yesodRunner logger h master sub (Just route) toMaster session Nothing -> on405 route session Nothing -> on404 session addCSS :: Text -> GWidget sub master () addCSS = toWidget . const . CssBuilder . fromText