summaryrefslogtreecommitdiff
path: root/standalone/android/haskell-patches/yesod-routes_1.1.2_0001-remove-TH-and-export-module-used-by-TH-splices.patch
diff options
context:
space:
mode:
Diffstat (limited to 'standalone/android/haskell-patches/yesod-routes_1.1.2_0001-remove-TH-and-export-module-used-by-TH-splices.patch')
-rw-r--r--standalone/android/haskell-patches/yesod-routes_1.1.2_0001-remove-TH-and-export-module-used-by-TH-splices.patch674
1 files changed, 0 insertions, 674 deletions
diff --git a/standalone/android/haskell-patches/yesod-routes_1.1.2_0001-remove-TH-and-export-module-used-by-TH-splices.patch b/standalone/android/haskell-patches/yesod-routes_1.1.2_0001-remove-TH-and-export-module-used-by-TH-splices.patch
deleted file mode 100644
index 33bcff447..000000000
--- a/standalone/android/haskell-patches/yesod-routes_1.1.2_0001-remove-TH-and-export-module-used-by-TH-splices.patch
+++ /dev/null
@@ -1,674 +0,0 @@
-From 06176b0f3dbbe559490f0971e0db205287793286 Mon Sep 17 00:00:00 2001
-From: Joey Hess <joey@kitenet.net>
-Date: Mon, 15 Apr 2013 21:01:12 -0400
-Subject: [PATCH] remove TH and export module used by TH splices
-
----
- Yesod/Routes/Overlap.hs | 74 ----------
- Yesod/Routes/Parse.hs | 115 ---------------
- Yesod/Routes/TH.hs | 12 --
- Yesod/Routes/TH/Dispatch.hs | 344 --------------------------------------------
- Yesod/Routes/TH/Types.hs | 16 ---
- yesod-routes.cabal | 21 ---
- 6 files changed, 582 deletions(-)
- delete mode 100644 Yesod/Routes/Overlap.hs
- delete mode 100644 Yesod/Routes/Parse.hs
- delete mode 100644 Yesod/Routes/TH.hs
- delete mode 100644 Yesod/Routes/TH/Dispatch.hs
-
-diff --git a/Yesod/Routes/Overlap.hs b/Yesod/Routes/Overlap.hs
-deleted file mode 100644
-index ae45a02..0000000
---- a/Yesod/Routes/Overlap.hs
-+++ /dev/null
-@@ -1,74 +0,0 @@
---- | Check for overlapping routes.
--module Yesod.Routes.Overlap
-- ( findOverlaps
-- , findOverlapNames
-- , Overlap (..)
-- ) where
--
--import Yesod.Routes.TH.Types
--import Data.List (intercalate)
--
--data Overlap t = Overlap
-- { overlapParents :: [String] -> [String] -- ^ parent resource trees
-- , overlap1 :: ResourceTree t
-- , overlap2 :: ResourceTree t
-- }
--
--findOverlaps :: ([String] -> [String]) -> [ResourceTree t] -> [Overlap t]
--findOverlaps _ [] = []
--findOverlaps front (x:xs) = concatMap (findOverlap front x) xs ++ findOverlaps front xs
--
--findOverlap :: ([String] -> [String]) -> ResourceTree t -> ResourceTree t -> [Overlap t]
--findOverlap front x y =
-- here rest
-- where
-- here
-- | overlaps (resourceTreePieces x) (resourceTreePieces y) (hasSuffix x) (hasSuffix y) = (Overlap front x y:)
-- | otherwise = id
-- rest =
-- case x of
-- ResourceParent name _ children -> findOverlaps (front . (name:)) children
-- ResourceLeaf{} -> []
--
--hasSuffix :: ResourceTree t -> Bool
--hasSuffix (ResourceLeaf r) =
-- case resourceDispatch r of
-- Subsite{} -> True
-- Methods Just{} _ -> True
-- Methods Nothing _ -> False
--hasSuffix ResourceParent{} = True
--
--overlaps :: [(CheckOverlap, Piece t)] -> [(CheckOverlap, Piece t)] -> Bool -> Bool -> Bool
--
---- No pieces on either side, will overlap regardless of suffix
--overlaps [] [] _ _ = True
--
---- No pieces on the left, will overlap if the left side has a suffix
--overlaps [] _ suffixX _ = suffixX
--
---- Ditto for the right
--overlaps _ [] _ suffixY = suffixY
--
---- As soon as we ignore a single piece (via CheckOverlap == False), we say that
---- the routes don't overlap at all. In other words, disabling overlap checking
---- on a single piece disables it on the whole route.
--overlaps ((False, _):_) _ _ _ = False
--overlaps _ ((False, _):_) _ _ = False
--
---- Compare the actual pieces
--overlaps ((True, pieceX):xs) ((True, pieceY):ys) suffixX suffixY =
-- piecesOverlap pieceX pieceY && overlaps xs ys suffixX suffixY
--
--piecesOverlap :: Piece t -> Piece t -> Bool
---- Statics only match if they equal. Dynamics match with anything
--piecesOverlap (Static x) (Static y) = x == y
--piecesOverlap _ _ = True
--
--findOverlapNames :: [ResourceTree t] -> [(String, String)]
--findOverlapNames =
-- map go . findOverlaps id
-- where
-- go (Overlap front x y) =
-- (go' $ resourceTreeName x, go' $ resourceTreeName y)
-- where
-- go' = intercalate "/" . front . return
-diff --git a/Yesod/Routes/Parse.hs b/Yesod/Routes/Parse.hs
-deleted file mode 100644
-index fc16eef..0000000
---- a/Yesod/Routes/Parse.hs
-+++ /dev/null
-@@ -1,115 +0,0 @@
--{-# LANGUAGE TemplateHaskell #-}
--{-# LANGUAGE DeriveDataTypeable #-}
--{-# OPTIONS_GHC -fno-warn-missing-fields #-} -- QuasiQuoter
--module Yesod.Routes.Parse
-- ( parseRoutes
-- , parseRoutesFile
-- , parseRoutesNoCheck
-- , parseRoutesFileNoCheck
-- , parseType
-- ) where
--
--import Language.Haskell.TH.Syntax
--import Data.Char (isUpper)
--import Language.Haskell.TH.Quote
--import qualified System.IO as SIO
--import Yesod.Routes.TH
--import Yesod.Routes.Overlap (findOverlapNames)
--
---- | A quasi-quoter to parse a string into a list of 'Resource's. Checks for
---- overlapping routes, failing if present; use 'parseRoutesNoCheck' to skip the
---- checking. See documentation site for details on syntax.
--parseRoutes :: QuasiQuoter
--parseRoutes = QuasiQuoter { quoteExp = x }
-- where
-- x s = do
-- let res = resourcesFromString s
-- case findOverlapNames res of
-- [] -> lift res
-- z -> error $ "Overlapping routes: " ++ unlines (map show z)
--
--parseRoutesFile :: FilePath -> Q Exp
--parseRoutesFile = parseRoutesFileWith parseRoutes
--
--parseRoutesFileNoCheck :: FilePath -> Q Exp
--parseRoutesFileNoCheck = parseRoutesFileWith parseRoutesNoCheck
--
--parseRoutesFileWith :: QuasiQuoter -> FilePath -> Q Exp
--parseRoutesFileWith qq fp = do
-- s <- qRunIO $ readUtf8File fp
-- quoteExp qq s
--
--readUtf8File :: FilePath -> IO String
--readUtf8File fp = do
-- h <- SIO.openFile fp SIO.ReadMode
-- SIO.hSetEncoding h SIO.utf8_bom
-- SIO.hGetContents h
--
---- | Same as 'parseRoutes', but performs no overlap checking.
--parseRoutesNoCheck :: QuasiQuoter
--parseRoutesNoCheck = QuasiQuoter
-- { quoteExp = lift . resourcesFromString
-- }
--
---- | Convert a multi-line string to a set of resources. See documentation for
---- the format of this string. This is a partial function which calls 'error' on
---- invalid input.
--resourcesFromString :: String -> [ResourceTree String]
--resourcesFromString =
-- fst . parse 0 . lines
-- where
-- parse _ [] = ([], [])
-- parse indent (thisLine:otherLines)
-- | length spaces < indent = ([], thisLine : otherLines)
-- | otherwise = (this others, remainder)
-- where
-- spaces = takeWhile (== ' ') thisLine
-- (others, remainder) = parse indent otherLines'
-- (this, otherLines') =
-- case takeWhile (/= "--") $ words thisLine of
-- [pattern, constr] | last constr == ':' ->
-- let (children, otherLines'') = parse (length spaces + 1) otherLines
-- (pieces, Nothing) = piecesFromString $ drop1Slash pattern
-- in ((ResourceParent (init constr) pieces children :), otherLines'')
-- (pattern:constr:rest) ->
-- let (pieces, mmulti) = piecesFromString $ drop1Slash pattern
-- disp = dispatchFromString rest mmulti
-- in ((ResourceLeaf (Resource constr pieces disp):), otherLines)
-- [] -> (id, otherLines)
-- _ -> error $ "Invalid resource line: " ++ thisLine
--
--dispatchFromString :: [String] -> Maybe String -> Dispatch String
--dispatchFromString rest mmulti
-- | null rest = Methods mmulti []
-- | all (all isUpper) rest = Methods mmulti rest
--dispatchFromString [subTyp, subFun] Nothing =
-- Subsite subTyp subFun
--dispatchFromString [_, _] Just{} =
-- error "Subsites cannot have a multipiece"
--dispatchFromString rest _ = error $ "Invalid list of methods: " ++ show rest
--
--drop1Slash :: String -> String
--drop1Slash ('/':x) = x
--drop1Slash x = x
--
--piecesFromString :: String -> ([(CheckOverlap, Piece String)], Maybe String)
--piecesFromString "" = ([], Nothing)
--piecesFromString x =
-- case (this, rest) of
-- (Left typ, ([], Nothing)) -> ([], Just typ)
-- (Left _, _) -> error "Multipiece must be last piece"
-- (Right piece, (pieces, mtyp)) -> (piece:pieces, mtyp)
-- where
-- (y, z) = break (== '/') x
-- this = pieceFromString y
-- rest = piecesFromString $ drop 1 z
--
--parseType :: String -> Type
--parseType = ConT . mkName -- FIXME handle more complicated stuff
--
--pieceFromString :: String -> Either String (CheckOverlap, Piece String)
--pieceFromString ('#':'!':x) = Right $ (False, Dynamic x)
--pieceFromString ('#':x) = Right $ (True, Dynamic x)
--pieceFromString ('*':x) = Left x
--pieceFromString ('!':x) = Right $ (False, Static x)
--pieceFromString x = Right $ (True, Static x)
-diff --git a/Yesod/Routes/TH.hs b/Yesod/Routes/TH.hs
-deleted file mode 100644
-index 41045b3..0000000
---- a/Yesod/Routes/TH.hs
-+++ /dev/null
-@@ -1,12 +0,0 @@
--{-# LANGUAGE TemplateHaskell #-}
--module Yesod.Routes.TH
-- ( module Yesod.Routes.TH.Types
-- -- * Functions
-- , module Yesod.Routes.TH.RenderRoute
-- -- ** Dispatch
-- , module Yesod.Routes.TH.Dispatch
-- ) where
--
--import Yesod.Routes.TH.Types
--import Yesod.Routes.TH.RenderRoute
--import Yesod.Routes.TH.Dispatch
-diff --git a/Yesod/Routes/TH/Dispatch.hs b/Yesod/Routes/TH/Dispatch.hs
-deleted file mode 100644
-index a52f69a..0000000
---- a/Yesod/Routes/TH/Dispatch.hs
-+++ /dev/null
-@@ -1,344 +0,0 @@
--{-# LANGUAGE TemplateHaskell #-}
--module Yesod.Routes.TH.Dispatch
-- ( -- ** Dispatch
-- mkDispatchClause
-- ) where
--
--import Prelude hiding (exp)
--import Yesod.Routes.TH.Types
--import Language.Haskell.TH.Syntax
--import Data.Maybe (catMaybes)
--import Control.Monad (forM, 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 Control.Applicative ((<$>))
--import Data.List (foldl')
--
--data FlatResource a = FlatResource [(String, [(CheckOverlap, Piece a)])] String [(CheckOverlap, Piece a)] (Dispatch a)
--
--flatten :: [ResourceTree a] -> [FlatResource a]
--flatten =
-- concatMap (go id)
-- where
-- go front (ResourceLeaf (Resource a b c)) = [FlatResource (front []) a b c]
-- go front (ResourceParent name pieces children) =
-- concatMap (go (front . ((name, pieces):))) children
--
---- |
----
---- This function will generate a single clause that will address all
---- your routing needs. It takes four arguments. The fourth (a list of
---- 'Resource's) is self-explanatory. We\'ll discuss the first
---- three. But first, let\'s cover the terminology.
----
---- Dispatching involves a master type and a sub type. When you dispatch to the
---- top level type, master and sub are the same. Each time to dispatch to
---- another subsite, the sub changes. This requires two changes:
----
---- * Getting the new sub value. This is handled via 'subsiteFunc'.
----
---- * Figure out a way to convert sub routes to the original master route. To
---- address this, we keep a toMaster function, and each time we dispatch to a
---- new subsite, we compose it with the constructor for that subsite.
----
---- Dispatching acts on two different components: the request method and a list
---- of path pieces. If we cannot match the path pieces, we need to return a 404
---- response. If the path pieces match, but the method is not supported, we need
---- to return a 405 response.
----
---- The final result of dispatch is going to be an application type. A simple
---- example would be the WAI Application type. However, our handler functions
---- will need more input: the master/subsite, the toMaster function, and the
---- type-safe route. Therefore, we need to have another type, the handler type,
---- and a function that turns a handler into an application, i.e.
----
---- > runHandler :: handler sub master -> master -> sub -> Route sub -> (Route sub -> Route master) -> app
----
---- This is the first argument to our function. Note that this will almost
---- certainly need to be a method of a typeclass, since it will want to behave
---- differently based on the subsite.
----
---- Note that the 404 response passed in is an application, while the 405
---- response is a handler, since the former can\'t be passed the type-safe
---- route.
----
---- In the case of a subsite, we don\'t directly deal with a handler function.
---- Instead, we redispatch to the subsite, passing on the updated sub value and
---- toMaster function, as well as any remaining, unparsed path pieces. This
---- function looks like:
----
---- > dispatcher :: master -> sub -> (Route sub -> Route master) -> app -> handler sub master -> Text -> [Text] -> app
----
---- Where the parameters mean master, sub, toMaster, 404 response, 405 response,
---- request method and path pieces. This is the second argument of our function.
----
---- Finally, we need a way to decide which of the possible formats
---- should the handler send the data out. Think of each URL holding an
---- abstract object which has multiple representation (JSON, plain HTML
---- etc). Each client might have a preference on which format it wants
---- the abstract object in. For example, a javascript making a request
---- (on behalf of a browser) might prefer a JSON object over a plain
---- HTML file where as a user browsing with javascript disabled would
---- want the page in HTML. The third argument is a function that
---- converts the abstract object to the desired representation
---- depending on the preferences sent by the client.
----
---- The typical values for the first three arguments are,
---- @'yesodRunner'@ for the first, @'yesodDispatch'@ for the second and
---- @fmap 'chooseRep'@.
--
--mkDispatchClause :: Q Exp -- ^ runHandler function
-- -> Q Exp -- ^ dispatcher function
-- -> Q Exp -- ^ fixHandler function
-- -> [ResourceTree a]
-- -> Q Clause
--mkDispatchClause runHandler dispatcher fixHandler ress' = do
-- -- Allocate the names to be used. Start off with the names passed to the
-- -- function itself (with a 0 suffix).
-- --
-- -- We don't reuse names so as to avoid shadowing names (triggers warnings
-- -- with -Wall). Additionally, we want to ensure that none of the code
-- -- passed to toDispatch uses variables from the closure to prevent the
-- -- dispatch data structure from being rebuilt on each run.
-- master0 <- newName "master0"
-- sub0 <- newName "sub0"
-- toMaster0 <- newName "toMaster0"
-- app4040 <- newName "app4040"
-- handler4050 <- newName "handler4050"
-- method0 <- newName "method0"
-- pieces0 <- newName "pieces0"
--
-- -- Name of the dispatch function
-- dispatch <- newName "dispatch"
--
-- -- Dispatch function applied to the pieces
-- let dispatched = VarE dispatch `AppE` VarE pieces0
--
-- -- The 'D.Route's used in the dispatch function
-- routes <- mapM (buildRoute runHandler dispatcher fixHandler) ress
--
-- -- The dispatch function itself
-- toDispatch <- [|D.toDispatch|]
-- let dispatchFun = FunD dispatch [Clause [] (NormalB $ toDispatch `AppE` ListE routes) []]
--
-- -- The input to the clause.
-- let pats = map VarP [master0, sub0, toMaster0, app4040, handler4050, method0, pieces0]
--
-- -- For each resource that dispatches based on methods, build up a map for handling the dispatching.
-- methodMaps <- catMaybes <$> mapM (buildMethodMap fixHandler) ress
--
-- u <- [|case $(return dispatched) of
-- Just f -> f $(return $ VarE master0)
-- $(return $ VarE sub0)
-- $(return $ VarE toMaster0)
-- $(return $ VarE app4040)
-- $(return $ VarE handler4050)
-- $(return $ VarE method0)
-- Nothing -> $(return $ VarE app4040)
-- |]
-- return $ Clause pats (NormalB u) $ dispatchFun : methodMaps
-- where
-- ress = flatten ress'
--
---- | Determine the name of the method map for a given resource name.
--methodMapName :: String -> Name
--methodMapName s = mkName $ "methods" ++ s
--
--buildMethodMap :: Q Exp -- ^ fixHandler
-- -> FlatResource a
-- -> Q (Maybe Dec)
--buildMethodMap _ (FlatResource _ _ _ (Methods _ [])) = return Nothing -- single handle function
--buildMethodMap fixHandler (FlatResource parents name pieces' (Methods mmulti methods)) = do
-- fromList <- [|Map.fromList|]
-- methods' <- mapM go methods
-- let exp = fromList `AppE` ListE methods'
-- let fun = FunD (methodMapName name) [Clause [] (NormalB exp) []]
-- return $ Just fun
-- where
-- pieces = concat $ map snd parents ++ [pieces']
-- go method = do
-- fh <- fixHandler
-- let func = VarE $ mkName $ map toLower method ++ name
-- pack' <- [|pack|]
-- let isDynamic Dynamic{} = True
-- isDynamic _ = False
-- let argCount = length (filter (isDynamic . snd) pieces) + maybe 0 (const 1) mmulti
-- xs <- replicateM argCount $ newName "arg"
-- let rhs = LamE (map VarP xs) $ fh `AppE` (foldl' AppE func $ map VarE xs)
-- return $ TupE [pack' `AppE` LitE (StringL method), rhs]
--buildMethodMap _ (FlatResource _ _ _ Subsite{}) = return Nothing
--
---- | Build a single 'D.Route' expression.
--buildRoute :: Q Exp -> Q Exp -> Q Exp -> FlatResource a -> Q Exp
--buildRoute runHandler dispatcher fixHandler (FlatResource parents name resPieces resDisp) = do
-- -- First two arguments to D.Route
-- routePieces <- ListE <$> mapM (convertPiece . snd) allPieces
-- isMulti <-
-- case resDisp of
-- Methods Nothing _ -> [|False|]
-- _ -> [|True|]
--
-- [|D.Route $(return routePieces) $(return isMulti) $(routeArg3 runHandler dispatcher fixHandler parents name (map snd allPieces) resDisp)|]
-- where
-- allPieces = concat $ map snd parents ++ [resPieces]
--
--routeArg3 :: Q Exp -- ^ runHandler
-- -> Q Exp -- ^ dispatcher
-- -> Q Exp -- ^ fixHandler
-- -> [(String, [(CheckOverlap, Piece a)])]
-- -> String -- ^ name of resource
-- -> [Piece a]
-- -> Dispatch a
-- -> Q Exp
--routeArg3 runHandler dispatcher fixHandler parents name resPieces resDisp = do
-- pieces <- newName "pieces"
--
-- -- Allocate input piece variables (xs) and variables that have been
-- -- converted via fromPathPiece (ys)
-- xs <- forM resPieces $ \piece ->
-- case piece of
-- Static _ -> return Nothing
-- Dynamic _ -> Just <$> newName "x"
--
-- -- Note: the zipping with Ints is just a workaround for (apparently) a bug
-- -- in GHC where the identifiers are considered to be overlapping. Using
-- -- newName should avoid the problem, but it doesn't.
-- ys <- forM (zip (catMaybes xs) [1..]) $ \(x, i) -> do
-- y <- newName $ "y" ++ show (i :: Int)
-- return (x, y)
--
-- -- In case we have multi pieces at the end
-- xrest <- newName "xrest"
-- yrest <- newName "yrest"
--
-- -- Determine the pattern for matching the pieces
-- pat <-
-- case resDisp of
-- Methods Nothing _ -> return $ ListP $ map (maybe WildP VarP) xs
-- _ -> do
-- let cons = mkName ":"
-- return $ foldr (\a b -> ConP cons [maybe WildP VarP a, b]) (VarP xrest) xs
--
-- -- Convert the xs
-- fromPathPiece' <- [|fromPathPiece|]
-- xstmts <- forM ys $ \(x, y) -> return $ BindS (VarP y) (fromPathPiece' `AppE` VarE x)
--
-- -- Convert the xrest if appropriate
-- (reststmts, yrest') <-
-- case resDisp of
-- Methods (Just _) _ -> do
-- fromPathMultiPiece' <- [|fromPathMultiPiece|]
-- return ([BindS (VarP yrest) (fromPathMultiPiece' `AppE` VarE xrest)], [yrest])
-- _ -> return ([], [])
--
-- -- The final expression that actually uses the values we've computed
-- caller <- buildCaller runHandler dispatcher fixHandler xrest parents name resDisp $ map snd ys ++ yrest'
--
-- -- Put together all the statements
-- just <- [|Just|]
-- let stmts = concat
-- [ xstmts
-- , reststmts
-- , [NoBindS $ just `AppE` caller]
-- ]
--
-- errorMsg <- [|error "Invariant violated"|]
-- let matches =
-- [ Match pat (NormalB $ DoE stmts) []
-- , Match WildP (NormalB errorMsg) []
-- ]
--
-- return $ LamE [VarP pieces] $ CaseE (VarE pieces) matches
--
---- | The final expression in the individual Route definitions.
--buildCaller :: Q Exp -- ^ runHandler
-- -> Q Exp -- ^ dispatcher
-- -> Q Exp -- ^ fixHandler
-- -> Name -- ^ xrest
-- -> [(String, [(CheckOverlap, Piece a)])]
-- -> String -- ^ name of resource
-- -> Dispatch a
-- -> [Name] -- ^ ys
-- -> Q Exp
--buildCaller runHandler dispatcher fixHandler xrest parents name resDisp ys = do
-- master <- newName "master"
-- sub <- newName "sub"
-- toMaster <- newName "toMaster"
-- app404 <- newName "_app404"
-- handler405 <- newName "_handler405"
-- method <- newName "_method"
--
-- let pat = map VarP [master, sub, toMaster, app404, handler405, method]
--
-- -- Create the route
-- let route = routeFromDynamics parents name ys
--
-- exp <-
-- case resDisp of
-- Methods _ ms -> do
-- handler <- newName "handler"
--
-- -- Run the whole thing
-- runner <- [|$(runHandler)
-- $(return $ VarE handler)
-- $(return $ VarE master)
-- $(return $ VarE sub)
-- (Just $(return route))
-- $(return $ VarE toMaster)|]
--
-- let myLet handlerExp =
-- LetE [FunD handler [Clause [] (NormalB handlerExp) []]] runner
--
-- if null ms
-- then do
-- -- Just a single handler
-- fh <- fixHandler
-- let he = fh `AppE` foldl' (\a b -> a `AppE` VarE b) (VarE $ mkName $ "handle" ++ name) ys
-- return $ myLet he
-- else do
-- -- Individual methods
-- mf <- [|Map.lookup $(return $ VarE method) $(return $ VarE $ methodMapName name)|]
-- f <- newName "f"
-- let apply = foldl' (\a b -> a `AppE` VarE b) (VarE f) ys
-- let body405 =
-- VarE handler405
-- `AppE` route
-- return $ CaseE mf
-- [ Match (ConP 'Just [VarP f]) (NormalB $ myLet apply) []
-- , Match (ConP 'Nothing []) (NormalB body405) []
-- ]
--
-- Subsite _ getSub -> do
-- let sub2 = foldl' (\a b -> a `AppE` VarE b) (VarE (mkName getSub) `AppE` VarE sub) ys
-- [|$(dispatcher)
-- $(return $ VarE master)
-- $(return sub2)
-- ($(return $ VarE toMaster) . $(return route))
-- $(return $ VarE app404)
-- ($(return $ VarE handler405) . $(return route))
-- $(return $ VarE method)
-- $(return $ VarE xrest)
-- |]
--
-- return $ LamE pat exp
--
---- | Convert a 'Piece' to a 'D.Piece'
--convertPiece :: Piece a -> Q Exp
--convertPiece (Static s) = [|D.Static (pack $(lift s))|]
--convertPiece (Dynamic _) = [|D.Dynamic|]
--
--routeFromDynamics :: [(String, [(CheckOverlap, Piece a)])] -- ^ parents
-- -> String -- ^ constructor name
-- -> [Name]
-- -> Exp
--routeFromDynamics [] name ys = foldl' (\a b -> a `AppE` VarE b) (ConE $ mkName name) ys
--routeFromDynamics ((parent, pieces):rest) name ys =
-- foldl' (\a b -> a `AppE` b) (ConE $ mkName parent) here
-- where
-- (here', ys') = splitAt (length $ filter (isDynamic . snd) pieces) ys
-- isDynamic Dynamic{} = True
-- isDynamic _ = False
-- here = map VarE here' ++ [routeFromDynamics rest name ys']
-diff --git a/Yesod/Routes/TH/Types.hs b/Yesod/Routes/TH/Types.hs
-index 52cd446..18208d3 100644
---- a/Yesod/Routes/TH/Types.hs
-+++ b/Yesod/Routes/TH/Types.hs
-@@ -29,10 +29,6 @@ instance Functor ResourceTree where
- fmap f (ResourceLeaf r) = ResourceLeaf (fmap f r)
- fmap f (ResourceParent a b c) = ResourceParent a (map (second $ fmap f) b) $ map (fmap f) c
-
--instance Lift t => Lift (ResourceTree t) where
-- lift (ResourceLeaf r) = [|ResourceLeaf $(lift r)|]
-- lift (ResourceParent a b c) = [|ResourceParent $(lift a) $(lift b) $(lift c)|]
--
- data Resource typ = Resource
- { resourceName :: String
- , resourcePieces :: [(CheckOverlap, Piece typ)]
-@@ -45,9 +41,6 @@ type CheckOverlap = Bool
- instance Functor Resource where
- fmap f (Resource a b c) = Resource a (map (second $ fmap f) b) (fmap f c)
-
--instance Lift t => Lift (Resource t) where
-- lift (Resource a b c) = [|Resource $(lift a) $(lift b) $(lift c)|]
--
- data Piece typ = Static String | Dynamic typ
- deriving Show
-
-@@ -55,10 +48,6 @@ instance Functor Piece where
- fmap _ (Static s) = (Static s)
- fmap f (Dynamic t) = Dynamic (f t)
-
--instance Lift t => Lift (Piece t) where
-- lift (Static s) = [|Static $(lift s)|]
-- lift (Dynamic t) = [|Dynamic $(lift t)|]
--
- data Dispatch typ =
- Methods
- { methodsMulti :: Maybe typ -- ^ type of the multi piece at the end
-@@ -74,11 +63,6 @@ instance Functor Dispatch where
- fmap f (Methods a b) = Methods (fmap f a) b
- fmap f (Subsite a b) = Subsite (f a) b
-
--instance Lift t => Lift (Dispatch t) where
-- lift (Methods Nothing b) = [|Methods Nothing $(lift b)|]
-- lift (Methods (Just t) b) = [|Methods (Just $(lift t)) $(lift b)|]
-- lift (Subsite t b) = [|Subsite $(lift t) $(lift b)|]
--
- resourceMulti :: Resource typ -> Maybe typ
- resourceMulti Resource { resourceDispatch = Methods (Just t) _ } = Just t
- resourceMulti _ = Nothing
-diff --git a/yesod-routes.cabal b/yesod-routes.cabal
-index eb367b3..dc6a12c 100644
---- a/yesod-routes.cabal
-+++ b/yesod-routes.cabal
-@@ -23,31 +23,10 @@ library
- , path-pieces >= 0.1 && < 0.2
-
- exposed-modules: Yesod.Routes.Dispatch
-- Yesod.Routes.TH
- Yesod.Routes.Class
-- Yesod.Routes.Parse
-- Yesod.Routes.Overlap
-- other-modules: Yesod.Routes.TH.Dispatch
-- Yesod.Routes.TH.RenderRoute
- Yesod.Routes.TH.Types
- ghc-options: -Wall
-
--test-suite runtests
-- type: exitcode-stdio-1.0
-- main-is: main.hs
-- hs-source-dirs: test
-- other-modules: Hierarchy
--
-- build-depends: base >= 4.3 && < 5
-- , yesod-routes
-- , text >= 0.5 && < 0.12
-- , HUnit >= 1.2 && < 1.3
-- , hspec >= 1.3
-- , containers
-- , template-haskell
-- , path-pieces
-- ghc-options: -Wall
--
- source-repository head
- type: git
- location: https://github.com/yesodweb/yesod
---
-1.8.2.rc3
-