diff --git a/yesod-auth/Yesod/Auth/Routes.hs b/yesod-auth/Yesod/Auth/Routes.hs index 3fec4ddd..dfce55af 100644 --- a/yesod-auth/Yesod/Auth/Routes.hs +++ b/yesod-auth/Yesod/Auth/Routes.hs @@ -16,5 +16,4 @@ mkYesodSubData "Auth" [parseRoutes| /check CheckR GET /login LoginR GET /logout LogoutR GET POST -/page/#Text/*Texts PluginR |] diff --git a/yesod-core/Yesod/Core.hs b/yesod-core/Yesod/Core.hs index 1c1b4247..6edb8df8 100644 --- a/yesod-core/Yesod/Core.hs +++ b/yesod-core/Yesod/Core.hs @@ -86,14 +86,13 @@ import Text.Blaze.Html (Html) import Control.Monad.Logger import Control.Monad.Trans.Class (MonadTrans (..)) import Yesod.Core.Internal.Session -import Yesod.Core.Internal.TH (ParseRoute (..)) import Yesod.Core.Class.Yesod import Yesod.Core.Class.Dispatch import Yesod.Core.Class.Breadcrumbs import Yesod.Core.Internal.Run (yesodRender, runFakeHandler) import qualified Paths_yesod_core import Data.Version (showVersion) -import Yesod.Routes.Class (RenderRoute (..)) +import Yesod.Routes.Class import Control.Monad.IO.Class (MonadIO (..)) import Control.Monad.Base (MonadBase (..)) import Control.Monad.Trans.Control (MonadBaseControl (..)) diff --git a/yesod-core/Yesod/Core/Internal/TH.hs b/yesod-core/Yesod/Core/Internal/TH.hs index e0ac60f2..5012fbf8 100644 --- a/yesod-core/Yesod/Core/Internal/TH.hs +++ b/yesod-core/Yesod/Core/Internal/TH.hs @@ -26,9 +26,6 @@ import Yesod.Routes.Class import Data.Text (Text) import qualified Data.ByteString.Char8 as S8 -class RenderRoute a => ParseRoute a where - parseRoute :: ([Text], [(Text, Text)]) -> Maybe (Route a) - -- | Generates URL datatype and site function for the given 'Resource's. This -- is used for creating sites, /not/ subsites. See 'mkYesodSub' for the latter. -- Use 'parseRoutes' to create the 'Resource's. diff --git a/yesod-core/Yesod/Core/Types.hs b/yesod-core/Yesod/Core/Types.hs index f3b1a6f3..32d4dfe5 100644 --- a/yesod-core/Yesod/Core/Types.hs +++ b/yesod-core/Yesod/Core/Types.hs @@ -53,7 +53,7 @@ import Text.Julius (JavascriptUrl) import Web.Cookie (SetCookie) import Yesod.Core.Internal.Util (getTime, putTime) import Control.Monad.Trans.Class (MonadTrans (..)) -import Yesod.Routes.Class (RenderRoute (..)) +import Yesod.Routes.Class (RenderRoute (..), ParseRoute (..)) -- Sessions type SessionMap = Map Text ByteString @@ -434,3 +434,5 @@ instance RenderRoute WaiSubsite where data Route WaiSubsite = WaiSubsiteRoute [Text] [(Text, Text)] deriving (Show, Eq, Read, Ord) renderRoute (WaiSubsiteRoute ps qs) = (ps, qs) +instance ParseRoute WaiSubsite where + parseRoute (x, y) = Just $ WaiSubsiteRoute x y diff --git a/yesod-routes/Yesod/Routes/Class.hs b/yesod-routes/Yesod/Routes/Class.hs index 92024165..bb87636b 100644 --- a/yesod-routes/Yesod/Routes/Class.hs +++ b/yesod-routes/Yesod/Routes/Class.hs @@ -2,6 +2,7 @@ {-# LANGUAGE FlexibleContexts #-} module Yesod.Routes.Class ( RenderRoute (..) + , ParseRoute (..) ) where import Data.Text (Text) @@ -10,3 +11,6 @@ class Eq (Route a) => RenderRoute a where -- | The type-safe URLs associated with a site argument. data Route a renderRoute :: Route a -> ([Text], [(Text, Text)]) + +class RenderRoute a => ParseRoute a where + parseRoute :: ([Text], [(Text, Text)]) -> Maybe (Route a) diff --git a/yesod-routes/test/Hierarchy.hs b/yesod-routes/test/Hierarchy.hs index 29088f06..1ed649ae 100644 --- a/yesod-routes/test/Hierarchy.hs +++ b/yesod-routes/test/Hierarchy.hs @@ -89,6 +89,7 @@ do , mdsSetPathInfo = [|\p (_, m) -> (p, m)|] , mds404 = [|pack "404"|] , mds405 = [|pack "405"|] + , mdsGetHandler = defaultGetHandler } resources return $ InstanceD diff --git a/yesod-routes/test/main.hs b/yesod-routes/test/main.hs index ed042ab7..60dcb2cb 100644 --- a/yesod-routes/test/main.hs +++ b/yesod-routes/test/main.hs @@ -116,6 +116,7 @@ do , mdsSetPathInfo = [|\p (_, m) -> (p, m)|] , mds404 = [|pack "404"|] , mds405 = [|pack "405"|] + , mdsGetHandler = defaultGetHandler } ress return $ InstanceD