yesod-core 0.8.0 → 0.8.0.1
raw patch · 4 files changed
+53/−22 lines, 4 filesdep ~web-routes-quasiPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: web-routes-quasi
API changes (from Hackage documentation)
- Yesod.Dispatch: fromMultiPiece :: MultiPiece s => [Text] -> Maybe s
- Yesod.Dispatch: fromSinglePiece :: SinglePiece s => Text -> Maybe s
- Yesod.Dispatch: toMultiPiece :: MultiPiece s => s -> [Text]
- Yesod.Dispatch: toSinglePiece :: SinglePiece s => s -> Text
Files
- Yesod/Dispatch.hs +3/−3
- Yesod/Internal/Dispatch.hs +46/−17
- runtests.hs +2/−0
- yesod-core.cabal +2/−2
Yesod/Dispatch.hs view
@@ -27,9 +27,9 @@ import Yesod.Handler import Yesod.Internal.Dispatch -import Web.Routes.Quasi-import Web.Routes.Quasi.Parse-import Web.Routes.Quasi.TH+import Web.Routes.Quasi (SinglePiece, MultiPiece, Strings)+import Web.Routes.Quasi.Parse (Resource (..), parseRoutes, parseRoutesFile)+import Web.Routes.Quasi.TH (THResource, Pieces (..), createRoutes, createRender) import Language.Haskell.TH.Syntax import qualified Network.Wai as W
Yesod/Internal/Dispatch.hs view
@@ -24,6 +24,7 @@ import Data.Monoid (mappend) import qualified Blaze.ByteString.Builder import qualified Data.ByteString.Char8 as S8+import qualified Data.Text {-| @@ -155,21 +156,35 @@ let caseExp = rm `AppE` VarE req yr <- [|yesodRunner|] cr <- [|fmap chooseRep|]+ pack <- [|Data.Text.pack|]+ eq <- [|(==)|] let url = foldl' AppE (ConE $ mkName constr) $ frontVars [] let runHandlerVars h = runHandler' $ cr `AppE` foldl' AppE (VarE $ mkName h) (frontVars [])- runHandler' h = NormalB $ yr `AppE` sub- `AppE` VarE master- `AppE` toMasterRoute- `AppE` VarE mkey- `AppE` (just `AppE` url)- `AppE` h- `AppE` VarE req- let match m = Match (LitP $ StringL m) (runHandlerVars $ map toLower m ++ constr) []- let clauses =- case methods of- [] -> [Clause [VarP req] (runHandlerVars $ "handle" ++ constr) []]- _ -> [Clause [VarP req] (NormalB $ CaseE caseExp $ map match methods ++- [Match WildP (runHandler' badMethod') []]) []]+ runHandler' h = yr `AppE` sub+ `AppE` VarE master+ `AppE` toMasterRoute+ `AppE` VarE mkey+ `AppE` (just `AppE` url)+ `AppE` h+ `AppE` VarE req+ let match :: String -> Q Match+ match m = do+ x <- newName "x"+ return $ Match+ (VarP x)+ (GuardedB+ [ ( NormalG $ InfixE (Just $ VarE x) eq (Just $ (LitE $ StringL m)) -- FIXME need to pack, right?+ , runHandlerVars $ map toLower m ++ constr+ )+ ])+ []+ clauses <-+ case methods of+ [] -> return [Clause [VarP req] (NormalB $ runHandlerVars $ "handle" ++ constr) []]+ _ -> do+ matches <- mapM match methods+ return [Clause [VarP req] (NormalB $ CaseE caseExp $ matches +++ [Match WildP (NormalB $ runHandler' badMethod') []]) []] let exp = CaseE segments [ Match (ConP (mkName "[]") [])@@ -185,10 +200,17 @@ srest <- newName "segments" innerExp <- mkSimpleExp (VarE srest) pieces frontVars x nothing <- [|Nothing|]+ y <- newName "y"+ pack <- [|Data.Text.pack|]+ eq <- [|(==)|] let exp = CaseE segments [ Match- (InfixP (LitP $ StringL s) (mkName ":") (VarP srest))- (NormalB innerExp)+ (InfixP (VarP y) (mkName ":") (VarP srest))+ (GuardedB+ [ ( NormalG $ InfixE (Just $ VarE y) eq (Just $ pack `AppE` (LitE $ StringL s))+ , innerExp+ )+ ]) [] , Match WildP (NormalB nothing) [] ]@@ -260,10 +282,17 @@ srest <- newName "segments" innerExp <- mkSubsiteExp srest pieces frontVars x nothing <- [|Nothing|]+ y <- newName "y"+ pack <- [|Data.Text.pack|]+ eq <- [|(==)|] let exp = CaseE (VarE segments) [ Match- (InfixP (LitP $ StringL s) (mkName ":") (VarP srest))- (NormalB innerExp)+ (InfixP (VarP y) (mkName ":") (VarP srest))+ (GuardedB+ [ ( NormalG $ InfixE (Just $ VarE y) eq (Just $ pack `AppE` (LitE $ StringL s))+ , innerExp+ )+ ]) [] , Match WildP (NormalB nothing) [] ]
runtests.hs view
@@ -4,6 +4,7 @@ import Test.Widget import Test.Media import Test.Links+import Test.NoOverloadedStrings main :: IO () main = defaultMain@@ -12,4 +13,5 @@ , widgetTest , mediaTest , linksTest+ , noOverloadedTest ]
yesod-core.cabal view
@@ -1,5 +1,5 @@ name: yesod-core-version: 0.8.0+version: 0.8.0.1 license: BSD3 license-file: LICENSE author: Michael Snoyman <michael@snoyman.com>@@ -33,7 +33,7 @@ , bytestring >= 0.9.1.4 && < 0.10 , text >= 0.5 && < 0.12 , template-haskell- , web-routes-quasi >= 0.7 && < 0.8+ , web-routes-quasi >= 0.7.0.1 && < 0.8 , hamlet >= 0.8 && < 0.9 , blaze-builder >= 0.2.1 && < 0.4 , transformers >= 0.2 && < 0.3