packages feed

web-routes-quasi 0.0.0 → 0.1.0

raw patch · 5 files changed

+42/−17 lines, 5 filessetup-changedPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Web.Routes.Quasi: createParse :: [Resource] -> Q [Clause]
+ Web.Routes.Quasi: createParse :: QuasiSiteSettings -> [Resource] -> Q [Clause]
- Web.Routes.Quasi: createRender :: [Resource] -> Q [Clause]
+ Web.Routes.Quasi: createRender :: QuasiSiteSettings -> [Resource] -> Q [Clause]

Files

− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
+ Setup.lhs view
@@ -0,0 +1,11 @@+#!/usr/bin/env runhaskell++> module Main where+> import Distribution.Simple+> import System.Cmd (system)++> main :: IO ()+> main = defaultMainWithHooks (simpleUserHooks { runTests = runTests' })++> runTests' :: a -> b -> c -> d -> IO ()+> runTests' _ _ _ _ = system "runhaskell -DTEST runtests.hs" >> return ()
Web/Routes/Quasi.hs view
@@ -270,7 +270,7 @@     go' (IntPiece _) = Just (NotStrict, ConT ''Integer)     go' (SlurpPiece _) = Just (NotStrict, AppT ListT $ ConT ''String)     go' _ = Nothing-    go'' (SubSite t _ _) = [(NotStrict, ConT $ mkName t)]+    go'' (SubSite t _ _) = [(NotStrict, ConT ''Routes `AppT` ConT (mkName t))]     go'' _ = []     claz = [''Show, ''Read, ''Eq] @@ -322,8 +322,8 @@         | otherwise = False  -- | Generates the set of clauses necesary to parse the given 'Resource's. See 'quasiParse'.-createParse :: [Resource] -> Q [Clause]-createParse res = do+createParse :: QuasiSiteSettings -> [Resource] -> Q [Clause]+createParse set res = do     final' <- final     clauses <- mapM go res     return $ if areResourcesComplete res@@ -338,9 +338,14 @@         let pat = mkPat ps' h         bod <- foldM go' (ConE $ mkName n) ps'         bod' <- case h of-                    SubSite _ f _ -> do+                    SubSite argType f _ -> do                         parse <- [|quasiParse|]-                        let parse' = parse `AppE` VarE (mkName f)+                        let siteType = ConT ''QuasiSite+                                        `AppT` crApplication set+                                        `AppT` ConT (mkName argType)+                                        `AppT` crArgument set+                            siteVar = VarE (mkName f) `SigE` siteType+                        let parse' = parse `AppE` siteVar                         let rhs = parse' `AppE` VarE (mkName "var0")                         fm <- [|fmap|]                         return $ fm `AppE` bod `AppE` rhs@@ -385,8 +390,8 @@  -- | Generates the set of clauses necesary to render the given 'Resource's. See -- 'quasiRender'.-createRender :: [Resource] -> Q [Clause]-createRender res = mapM go res+createRender :: QuasiSiteSettings -> [Resource] -> Q [Clause]+createRender set res = mapM go res   where     go (Resource n ps h) = do         let ps' = zip [1..] ps@@ -397,9 +402,14 @@     lastPat _ = []     go' (_, StaticPiece _) = Nothing     go' (i, _) = Just $ VarP $ mkName $ "var" ++ show (i :: Int)-    mkBod [] (SubSite _ f _) = do+    mkBod [] (SubSite argType f _) = do         format <- [|quasiRender|]-        let format' = format `AppE` VarE (mkName f)+        let siteType = ConT ''QuasiSite+                        `AppT` crApplication set+                        `AppT` ConT (mkName argType)+                        `AppT` crArgument set+            siteVar = VarE (mkName f) `SigE` siteType+        let format' = format `AppE` siteVar         return $ format' `AppE` VarE (mkName "var0")     mkBod [] _ = lift ([] :: [String])     mkBod ((_, StaticPiece x):xs) h = do@@ -472,9 +482,14 @@                                 then []                                 else [Match WildP (NormalB $ VarE badMethod) []]                     return $ CaseE (VarE method) $ matches ++ final-                SubSite _ f getArg -> do+                SubSite argType f getArg -> do                     qd <- [|quasiDispatch|]-                    let disp = qd `AppE` VarE (mkName f)+                    let siteType = ConT ''QuasiSite+                                    `AppT` crApplication set+                                    `AppT` ConT (mkName argType)+                                    `AppT` crArgument set+                        siteVar = VarE (mkName f) `SigE` siteType+                    let disp = qd `AppE` siteVar                     o <- [|(.)|]                     let tomurl' = InfixE (Just $ VarE tomurl) o                                 $ Just $ ConE $ mkName constr@@ -541,8 +556,8 @@ createQuasiSite set = do     dt <- dataTypeDec set     let tySyn = TySynInstD ''Routes [crArgument set] $ ConT $ crRoutes set-    parseClauses <- createParse $ crResources set-    renderClauses <- createRender $ crResources set+    parseClauses <- createParse set $ crResources set+    renderClauses <- createRender set $ crResources set     dispatchClauses <- createQuasiDispatch set     st <- siteDecType set     s <- siteDec (crSite set) parseClauses renderClauses dispatchClauses
runtests.hs view
@@ -57,11 +57,12 @@     , crResources = [$parseRoutes| /                    Home       GET /user/#userid        User       GET PUT DELETE-/static              Static     StaticRoutes siteStatic getStaticArgs+/static              Static     StaticArgs siteStatic getStaticArgs /foo/*slurp          Foo /bar/$barparam       Bar |]     , crSite = mkName "theSite"+    , crMaster = Left $ ConT ''Int     }  handleFoo :: [String] -> Explode MyRoutes murl marg
web-routes-quasi.cabal view
@@ -1,5 +1,5 @@ name:            web-routes-quasi-version:         0.0.0+version:         0.1.0 license:         BSD3 license-file:    LICENSE author:          Michael Snoyman <michael@snoyman.com>