Exposing fullRender

This commit is contained in:
Michael Snoyman 2010-05-04 22:08:20 +03:00
parent 56fc788d3f
commit ed56c87317

View File

@ -8,6 +8,8 @@ module Yesod.Dispatch
-- * Convert to WAI -- * Convert to WAI
, toWaiApp , toWaiApp
, basicHandler , basicHandler
-- * Utilities
, fullRender
) where ) where
import Yesod.Handler import Yesod.Handler
@ -120,8 +122,7 @@ toWaiApp' y resource session' env = do
types = httpAccept env types = httpAccept env
pathSegments = filter (not . null) $ cleanupSegments resource pathSegments = filter (not . null) $ cleanupSegments resource
eurl = quasiParse site pathSegments eurl = quasiParse site pathSegments
render u = approot y ++ '/' render = fullRender (approot y) site
: encodePathInfo (fixSegs $ quasiRender site u)
rr <- parseWaiRequest env session' rr <- parseWaiRequest env session'
onRequest y rr onRequest y rr
let ya = case eurl of let ya = case eurl of
@ -143,6 +144,14 @@ toWaiApp' y resource session' env = do
let eh er = runHandler (errorHandler y er) render eurl' id y id let eh er = runHandler (errorHandler y er) render eurl' id y id
unYesodApp ya eh rr types >>= responseToWaiResponse unYesodApp ya eh rr types >>= responseToWaiResponse
-- | Fully render a route to an absolute URL.
fullRender :: String -- ^ approot, no trailing slash
-> QuasiSite YesodApp arg arg
-> Routes arg
-> String
fullRender ar site route =
ar ++ '/' : encodePathInfo (fixSegs $ quasiRender site route)
cleanupSegments :: [B.ByteString] -> [String] cleanupSegments :: [B.ByteString] -> [String]
cleanupSegments = decodePathInfo . intercalate "/" . map B.unpack cleanupSegments = decodePathInfo . intercalate "/" . map B.unpack