From d69ee53a1770f08cef0c54ff30d31bd321596a78 Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Sun, 1 Jan 2012 17:32:25 +0200 Subject: [PATCH] yesod-routes: removed yesod-core dependency --- yesod-routes/Yesod/Routes/TH.hs | 9 ++++----- yesod-routes/test/main.hs | 19 ++++++++++--------- yesod-routes/yesod-routes.cabal | 5 ++--- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/yesod-routes/Yesod/Routes/TH.hs b/yesod-routes/Yesod/Routes/TH.hs index f4a9918d..4552c014 100644 --- a/yesod-routes/Yesod/Routes/TH.hs +++ b/yesod-routes/Yesod/Routes/TH.hs @@ -16,15 +16,14 @@ module Yesod.Routes.TH ) where import Language.Haskell.TH.Syntax -import Yesod.Core - ( Route, RenderRoute (renderRoute), toSinglePiece, toMultiPiece - ) import Data.Maybe (maybeToList, catMaybes) import Control.Monad (replicateM) import Data.Text (pack) import qualified Yesod.Routes.Dispatch as D import qualified Data.Map as Map import Data.Char (toLower) +import Web.PathPieces (PathPiece (..), PathMultiPiece (..)) +import Yesod.Routes.Class data Resource = Resource { resourceName :: String @@ -85,14 +84,14 @@ mkRenderRouteClauses = let pat = ConP (mkName $ resourceName res) $ map VarP $ dyns ++ sub pack <- [|pack|] - tsp <- [|toSinglePiece|] + tsp <- [|toPathPiece|] let piecesSingle = mkPieces (AppE pack . LitE . StringL) tsp (resourcePieces res) dyns piecesMulti <- case resourceMulti res of Nothing -> return $ ListE [] Just{} -> do - tmp <- [|toMultiPiece|] + tmp <- [|toPathMultiPiece|] return $ tmp `AppE` VarE (last dyns) body <- diff --git a/yesod-routes/test/main.hs b/yesod-routes/test/main.hs index f2e6ffc9..bafb5420 100644 --- a/yesod-routes/test/main.hs +++ b/yesod-routes/test/main.hs @@ -1,14 +1,16 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE FlexibleInstances #-} import Test.Hspec.Monadic import Test.Hspec.HUnit () import Test.HUnit ((@?=)) import Data.Text (Text, unpack) import Yesod.Routes.Dispatch hiding (Static, Dynamic) +import Yesod.Routes.Class hiding (Route) +import qualified Yesod.Routes.Class as YRC import qualified Yesod.Routes.Dispatch as D import Yesod.Routes.TH hiding (Dispatch) -import qualified Yesod.Core as YC import Language.Haskell.TH.Syntax import qualified Data.Map as Map @@ -55,10 +57,9 @@ test :: Dispatch () Int -> [Text] -> Maybe Int test dispatch ts = dispatch ts () data MySub = MySub -data MySubRoute = MySubRoute ([Text], [(Text, Text)]) - deriving (Show, Read, Eq) -type instance YC.Route MySub = MySubRoute -instance YC.RenderRoute MySubRoute where +data instance YRC.Route MySub = MySubRoute ([Text], [(Text, Text)]) + deriving (Show, Eq, Read) +instance RenderRoute (YRC.Route MySub) where renderRoute (MySubRoute x) = x dispatchHelper :: Either String (Map.Map Text String) -> Maybe String @@ -110,10 +111,10 @@ main = hspecX $ do it "dispatches correctly to []" $ test overlap [] @?= Just 22 describe "RenderRoute instance" $ do - it "renders root correctly" $ YC.renderRoute RootR @?= ([], []) - it "renders blog post correctly" $ YC.renderRoute (BlogPostR "foo") @?= (["blog", "foo"], []) - it "renders wiki correctly" $ YC.renderRoute (WikiR ["foo", "bar"]) @?= (["wiki", "foo", "bar"], []) - it "renders subsite correctly" $ YC.renderRoute (SubsiteR $ MySubRoute (["foo", "bar"], [("baz", "bin")])) + it "renders root correctly" $ renderRoute RootR @?= ([], []) + it "renders blog post correctly" $ renderRoute (BlogPostR "foo") @?= (["blog", "foo"], []) + it "renders wiki correctly" $ renderRoute (WikiR ["foo", "bar"]) @?= (["wiki", "foo", "bar"], []) + it "renders subsite correctly" $ renderRoute (SubsiteR $ MySubRoute (["foo", "bar"], [("baz", "bin")])) @?= (["subsite", "foo", "bar"], [("baz", "bin")]) describe "thDispatch" $ do diff --git a/yesod-routes/yesod-routes.cabal b/yesod-routes/yesod-routes.cabal index 0727af45..8f8b9ba6 100644 --- a/yesod-routes/yesod-routes.cabal +++ b/yesod-routes/yesod-routes.cabal @@ -13,15 +13,15 @@ homepage: http://www.yesodweb.com/ library build-depends: base >= 4 && < 5 - , yesod-core >= 0.9.3 && < 0.10 , text >= 0.5 && < 0.12 , vector >= 0.8 && < 0.10 - , clientsession >= 0.7 && < 0.8 , containers >= 0.2 && < 0.5 , template-haskell + , path-pieces >= 0.1 && < 0.2 exposed-modules: Yesod.Routes.Dispatch Yesod.Routes.TH + Yesod.Routes.Class ghc-options: -Wall test-suite runtests @@ -34,7 +34,6 @@ test-suite runtests , text >= 0.5 && < 0.12 , HUnit >= 1.2 && < 1.3 , hspec >= 0.6 && < 0.10 - , yesod-core >= 0.9.3 && < 0.10 , containers , template-haskell ghc-options: -Wall