yesod/yesod-core/Yesod/Routes/Class.hs
2014-10-05 15:06:23 -07:00

25 lines
998 B
Haskell

{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE FlexibleContexts #-}
module Yesod.Routes.Class
( RenderRoute (..)
, ParseRoute (..)
, RouteAttrs (..)
) where
import Data.Text (Text)
import Data.Set (Set)
class Eq (Route a) => RenderRoute a where
-- | The <http://www.yesodweb.com/book/routing-and-handlers type-safe URLs> associated with a site argument.
data Route a
renderRoute :: Route a
-> ([Text], [(Text, Text)]) -- ^ The path of the URL split on forward slashes, and a list of query parameters with their associated value.
class RenderRoute a => ParseRoute a where
parseRoute :: ([Text], [(Text, Text)]) -- ^ The path of the URL split on forward slashes, and a list of query parameters with their associated value.
-> Maybe (Route a)
class RenderRoute a => RouteAttrs a where
routeAttrs :: Route a
-> Set Text -- ^ A set of <http://www.yesodweb.com/book/route-attributes attributes associated with the route>.