Slimmed down Resource exports
This commit is contained in:
parent
ec2d63ce07
commit
f5cb44bff1
@ -23,20 +23,8 @@
|
|||||||
--
|
--
|
||||||
---------------------------------------------------------
|
---------------------------------------------------------
|
||||||
module Yesod.Resource
|
module Yesod.Resource
|
||||||
( ResourcePattern
|
( resources
|
||||||
, checkPattern
|
, resourcesNoCheck
|
||||||
, checkPatternsTH
|
|
||||||
, validatePatterns
|
|
||||||
, checkPatterns
|
|
||||||
, checkRPNodes
|
|
||||||
, rpnodesTH
|
|
||||||
, rpnodesTHCheck
|
|
||||||
, rpnodesQuasi
|
|
||||||
, RPNode (..)
|
|
||||||
, VerbMap (..)
|
|
||||||
, RP (..)
|
|
||||||
, RPP (..)
|
|
||||||
, UrlParam (..)
|
|
||||||
#if TEST
|
#if TEST
|
||||||
-- * Testing
|
-- * Testing
|
||||||
, testSuite
|
, testSuite
|
||||||
@ -48,7 +36,6 @@ import Yesod.Definitions
|
|||||||
import Data.List (nub)
|
import Data.List (nub)
|
||||||
import Data.Char (isDigit)
|
import Data.Char (isDigit)
|
||||||
|
|
||||||
import Control.Monad (when)
|
|
||||||
import Language.Haskell.TH.Syntax
|
import Language.Haskell.TH.Syntax
|
||||||
import Language.Haskell.TH.Quote
|
import Language.Haskell.TH.Quote
|
||||||
|
|
||||||
@ -73,6 +60,7 @@ import Test.Framework.Providers.HUnit
|
|||||||
import Test.Framework.Providers.QuickCheck (testProperty)
|
import Test.Framework.Providers.QuickCheck (testProperty)
|
||||||
import Test.HUnit hiding (Test)
|
import Test.HUnit hiding (Test)
|
||||||
import Test.QuickCheck
|
import Test.QuickCheck
|
||||||
|
import Control.Monad (when)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
-- | Resource Pattern Piece
|
-- | Resource Pattern Piece
|
||||||
@ -125,11 +113,6 @@ checkPatternUP rp r = map snd $ fromJust (checkPattern rp r)
|
|||||||
checkPattern :: RP -> Resource -> Maybe [(String, UrlParam)]
|
checkPattern :: RP -> Resource -> Maybe [(String, UrlParam)]
|
||||||
checkPattern = checkPatternPieces . unRP
|
checkPattern = checkPatternPieces . unRP
|
||||||
|
|
||||||
checkPatternsTH :: Bool -> [ResourcePattern] -> Q Exp
|
|
||||||
checkPatternsTH toCheck patterns = do
|
|
||||||
runIO $ when toCheck $ checkPatterns patterns
|
|
||||||
[|return ()|]
|
|
||||||
|
|
||||||
checkPatternPieces :: [RPP] -> Resource -> Maybe [(String, UrlParam)]
|
checkPatternPieces :: [RPP] -> Resource -> Maybe [(String, UrlParam)]
|
||||||
checkPatternPieces rp r
|
checkPatternPieces rp r
|
||||||
| not (null rp) && isSlurp (last rp) = do
|
| not (null rp) && isSlurp (last rp) = do
|
||||||
@ -262,7 +245,8 @@ rpnodesTH :: [RPNode] -> Q Exp
|
|||||||
rpnodesTH ns = do
|
rpnodesTH ns = do
|
||||||
b <- helper ns
|
b <- helper ns
|
||||||
nfv <- [|notFoundVerb|]
|
nfv <- [|notFoundVerb|]
|
||||||
let b' = b ++ [(NormalG $ VarE $ mkName "otherwise", nfv)]
|
ow <- [|otherwise|]
|
||||||
|
let b' = b ++ [(NormalG ow, nfv)]
|
||||||
return $ LamE [VarP $ mkName "resource"]
|
return $ LamE [VarP $ mkName "resource"]
|
||||||
$ CaseE (TupE []) [Match WildP (GuardedB b') []]
|
$ CaseE (TupE []) [Match WildP (GuardedB b') []]
|
||||||
where
|
where
|
||||||
@ -337,16 +321,21 @@ instance Lift RPNode where
|
|||||||
instance Lift RP where
|
instance Lift RP where
|
||||||
lift (RP rpps) = do
|
lift (RP rpps) = do
|
||||||
rpps' <- lift rpps
|
rpps' <- lift rpps
|
||||||
return $ ConE (mkName "RP") `AppE` rpps'
|
rp <- [|RP|]
|
||||||
|
return $ rp `AppE` rpps'
|
||||||
instance Lift RPP where
|
instance Lift RPP where
|
||||||
lift (Static s) =
|
lift (Static s) = do
|
||||||
return $ ConE (mkName "Static") `AppE` (LitE $ StringL s)
|
st <- [|Static|]
|
||||||
lift (Dynamic s) =
|
return $ st `AppE` (LitE $ StringL s)
|
||||||
return $ ConE (mkName "Dynamic") `AppE` (LitE $ StringL s)
|
lift (Dynamic s) = do
|
||||||
lift (DynInt s) =
|
d <- [|Dynamic|]
|
||||||
return $ ConE (mkName "DynInt") `AppE` (LitE $ StringL s)
|
return $ d `AppE` (LitE $ StringL s)
|
||||||
lift (Slurp s) =
|
lift (DynInt s) = do
|
||||||
return $ ConE (mkName "Slurp") `AppE` (LitE $ StringL s)
|
d <- [|DynInt|]
|
||||||
|
return $ d `AppE` (LitE $ StringL s)
|
||||||
|
lift (Slurp s) = do
|
||||||
|
sl <- [|Slurp|]
|
||||||
|
return $ sl `AppE` (LitE $ StringL s)
|
||||||
liftVerbMap :: VerbMap -> Int -> Q Exp
|
liftVerbMap :: VerbMap -> Int -> Q Exp
|
||||||
liftVerbMap (AllVerbs s) _ = do
|
liftVerbMap (AllVerbs s) _ = do
|
||||||
cr <- [|(.) (fmap chooseRep)|]
|
cr <- [|(.) (fmap chooseRep)|]
|
||||||
@ -366,15 +355,16 @@ liftVerbMap (Verbs vs) params =
|
|||||||
(NormalB $ LamE (replicate params WildP) $ VarE $ mkName "notFound")
|
(NormalB $ LamE (replicate params WildP) $ VarE $ mkName "notFound")
|
||||||
[]
|
[]
|
||||||
|
|
||||||
strToExp :: String -> Q Exp
|
strToExp :: Bool -> String -> Q Exp
|
||||||
strToExp s = do
|
strToExp toCheck s = do
|
||||||
let yd :: YamlDoc
|
rpnodes <- runIO $ convertAttemptWrap $ YamlDoc $ cs s
|
||||||
yd = YamlDoc $ cs s
|
(if toCheck then rpnodesTHCheck else rpnodesTH) rpnodes
|
||||||
rpnodes <- runIO $ convertAttemptWrap yd
|
|
||||||
rpnodesTHCheck rpnodes
|
|
||||||
|
|
||||||
rpnodesQuasi :: QuasiQuoter
|
resources :: QuasiQuoter
|
||||||
rpnodesQuasi = QuasiQuoter strToExp undefined
|
resources = QuasiQuoter (strToExp True) undefined
|
||||||
|
|
||||||
|
resourcesNoCheck :: QuasiQuoter
|
||||||
|
resourcesNoCheck = QuasiQuoter (strToExp False) undefined
|
||||||
|
|
||||||
#if TEST
|
#if TEST
|
||||||
---- Testing
|
---- Testing
|
||||||
|
|||||||
@ -30,7 +30,7 @@ instance Show (Verb -> Handler MyYesod RepChooser) where
|
|||||||
instance Show (Resource -> Verb -> Handler MyYesod RepChooser) where
|
instance Show (Resource -> Verb -> Handler MyYesod RepChooser) where
|
||||||
show _ = "resource -> verb -> handler"
|
show _ = "resource -> verb -> handler"
|
||||||
handler :: Resource -> Verb -> Handler MyYesod RepChooser
|
handler :: Resource -> Verb -> Handler MyYesod RepChooser
|
||||||
handler = [$rpnodesQuasi|
|
handler = [$resources|
|
||||||
/static/*filepath/: getStatic
|
/static/*filepath/: getStatic
|
||||||
/page/:
|
/page/:
|
||||||
Get: pageIndex
|
Get: pageIndex
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user