packages feed

nested-routes 8.2.0 → 9.0.0

raw patch · 2 files changed

+15/−140 lines, 2 filesdep −bifunctorsdep −bytestringdep −hashtablesdep ~pred-triedep ~triesdep ~wai-middleware-content-typePVP ok

version bump matches the API change (PVP)

Dependencies removed: bifunctors, bytestring, hashtables, pred-set, semigroups, transformers

Dependency ranges changed: pred-trie, tries, wai-middleware-content-type, wai-middleware-verbs

API changes (from Hackage documentation)

Files

nested-routes.cabal view
@@ -2,12 +2,12 @@ -- -- see: https://github.com/sol/hpack ----- hash: c5052b8557dda01bdd0835fdee96270827420d90308a2f409b2f64c317f8e3d4+-- hash: c01d97006f99cd2296688bd70d1bff61663c843911d5c92a8484e2e578934d31  name:           nested-routes-version:        8.2.0+version:        9.0.0 synopsis:       Declarative, compositional Wai responses-description:    This library attempts to make it easier to write nice Wai response handlers by giving us a Sinatra/ <https://hackage.haskell.org/package/scotty Scotty>-like syntax for declaring HTTP-verb oriented routes, in addition to file-extension handling and rose-tree like composition. Not only do we have literal route specification, like <https://hackage.haskell.org/package/scotty Scotty> & <https://hackage.haskell.org/package/spock Spock>, but we can also embed <https://hackage.haskell.org/package/attoparsec Attoparsec> parsers and <https://hackage.haskell.org/package/regex-compat Regular Expressions> /directly/ in our routes, with our handlers reflecting their results.+description:    Please see the README on Github at <https://git.localcooking.com/tooling/pred-trie#readme> category:       Web homepage:       https://github.com/athanclark/nested-routes#readme bug-reports:    https://github.com/athanclark/nested-routes/issues@@ -34,26 +34,20 @@   build-depends:       attoparsec     , base >=4.9 && <5-    , bifunctors-    , bytestring     , errors     , exceptions     , extractable-singleton     , hashable-    , hashtables     , monad-control-aligned     , mtl     , poly-arity >=0.0.7-    , pred-set >=0.0.1-    , pred-trie >=0.5.1+    , pred-trie >=0.6.0     , regex-compat-    , semigroups     , text-    , transformers-    , tries+    , tries >=0.0.5     , unordered-containers-    , wai-middleware-content-type >=0.5.0.1-    , wai-middleware-verbs >=0.3.1+    , wai-middleware-content-type >=0.6.0+    , wai-middleware-verbs >=0.3.2     , wai-transformers >=0.0.7   default-language: Haskell2010 @@ -71,13 +65,10 @@   build-depends:       attoparsec     , base-    , bifunctors-    , bytestring     , errors     , exceptions     , extractable-singleton     , hashable-    , hashtables     , hspec     , hspec-wai     , http-types@@ -85,17 +76,14 @@     , mtl     , nested-routes     , poly-arity >=0.0.7-    , pred-set >=0.0.1-    , pred-trie >=0.5.1+    , pred-trie >=0.6.0     , regex-compat-    , semigroups     , tasty     , tasty-hspec     , text-    , transformers-    , tries+    , tries >=0.0.5     , unordered-containers-    , wai-middleware-content-type >=0.5.0.1-    , wai-middleware-verbs >=0.3.1+    , wai-middleware-content-type >=0.6.0+    , wai-middleware-verbs >=0.3.2     , wai-transformers >=0.0.7   default-language: Haskell2010
src/Web/Routes/Nested.hs view
@@ -84,7 +84,7 @@ import           Network.Wai.Middleware.ContentType hiding (responseStatus, responseHeaders, responseData)  import           Data.Trie.Pred.Base                (RootedPredTrie (..), PredTrie (..))-import           Data.Trie.Pred.Base.Step           (PredStep (..), PredSteps (..))+import           Data.Trie.Pred.Base.Step           (PredStep (..), Pred (..)) import qualified Data.Trie.Pred.Interface           as Interface import           Data.Trie.Pred.Interface.Types     (Singleton (..), Extrude (..), CatMaybes) import           Data.Trie.HashMap                  (HashMapStep (..), HashMapChildren (..))@@ -356,7 +356,7 @@ lookupWithLPT :: ( Hashable s                  , Eq s                  ) => (s -> s) -> NonEmpty s -> PredTrie s a -> Maybe ([s], a)-lookupWithLPT f tss (PredTrie (HashMapStep ls) (PredSteps ps)) =+lookupWithLPT f tss (PredTrie (HashMapStep ls) (PredStep ps)) =   getFirst $ First (goLit f tss ls)           <> foldMap (First . goPred f tss) ps @@ -379,99 +379,16 @@           , Eq s           ) => (s -> s)             -> NonEmpty s-            -> PredStep s PredTrie s a+            -> Pred PredTrie s a             -> Maybe ([s], a)-goPred f (t:|ts) (PredStep _ predicate mx xs) = do+goPred f (t:|ts) (Pred predicate mx xs) = do   d <- predicate t   if null ts   then (([t],) . ($ d)) <$> mx   else bimap (t:) ($ d) <$> lookupWithLPT f (fromList ts) xs --- lookupWithLPT :: ( Eq k---                  , Hashable k---                  , Typeable s---                  , Typeable k---                  ) => PredSet s k---                    -> (k -> k)---                    -> NonEmpty k---                    -> PredTrie k a---                    -> ST s (Maybe a)--- lookupWithLPT predSet f (k:|ks) (HashTableTrie raw preds) = do---   mx <- HT.lookup raw $ if null ks then f k else k---   case mx of---     Just (RawValue mx' children) ->---       case ks of---         []       -> pure mx'---         (k':ks') -> lookupWithLPT predSet f (k':|ks') children---     Nothing ->---       let -- go :: Typeable t => Maybe t -> PredStep s k t -> ST s (Maybe t)---           go solution@(Just _) _                          = pure solution---           go Nothing (MPT.PredStep predKey mHandler children) = do---             mx' <- HS.lookup predKey k predSet---             case mx' of---               Nothing -> pure Nothing---               Just x  ->---                 case ks of---                   [] ->---                     pure $! ($ x) <$> mHandler---                   (k':ks') -> do---                     mf <- lookupWithLPT predSet f (k':|ks') children---                     pure $! ($ x) <$> mf---       in  foldlM go Nothing preds --- lookupWithLPT :: ( Eq k---                 , Hashable k---                 , Typeable s---                 , Typeable k---                 ) => PredSet s k---                   -> (k -> k)---                   -> NonEmpty k---                   -> HashTableTrie s k a---                   -> ST s (Maybe (NonEmpty k, a, [k]))--- lookupWithLPT predSet f (k:|ks) (HashTableTrie raw preds) = do---   mLit <- goLit raw---   case mLit of---     Just _  -> pure mLit---     Nothing ->---       let go solution@(Just _) _ = pure solution---           go Nothing pred        = goPred pred---       in  foldlM go Nothing preds---   where---     goLit xs = do---       mx' <- if null ks---              then HT.lookup raw (f k)---              else HT.lookup raw k---       case mx' of---         Nothing -> pure Nothing---         Just (RawValue mx children) ->---           let mFoundHere = (\x -> (k:|[], x, ks)) <$> mx---               prependAncestry (pre,x,suff) = (k:|NE.toList pre,x,suff)---           in case ks of---             [] -> pure mFoundHere---             (k':ks') -> do---               mFoundThere <- MPT.match predSet (k':|ks') children---               pure $! getFirst $---                    First (prependAncestry <$> mFoundThere)---                 <> First mFoundHere------     goPred (MPT.PredStep predKey mx children) = do---       mr' <- HS.lookup predKey k predSet---       case mr' of---         Nothing -> pure Nothing---         Just r  ->---           let mFoundHere = (\x -> (k:|[], x r, ks)) <$> mx---               prependAncestryAndApply (pre,f,suff) =---                 (k:|NE.toList pre,f r,suff)---           in case ks of---             [] -> pure mFoundHere---             (k':ks') -> do---               mFoundThere <- MPT.match predSet (k':|ks') children---               pure $! getFirst $---                    First (prependAncestryAndApply <$> mFoundThere)---                 <> First mFoundHere -- {-# INLINEABLE lookupWithLPT #-}  @@ -480,36 +397,6 @@                  ) => (s -> s) -> [s] -> RootedPredTrie s a -> Maybe ([s], a) lookupWithLRPT _ [] (RootedPredTrie mx _) = ([],) <$> mx lookupWithLRPT f ts (RootedPredTrie _ xs) = lookupWithLPT f (fromList ts) xs---- lookupWithLRPT :: ( Eq k---                  , Hashable k---                  , Typeable s---                  , Typeable k---                  , Typeable a---                  ) => (k -> k)---                    -> [k]---                    -> RootedHashTableTrie s k a---                    -> ST s (Maybe ([k],a,[k]))--- lookupWithLRPT _ [] (RootedHashTableTrie mx _ _) =---   pure $! (\x -> ([],x,[])) <$> mx--- lookupWithLRPT f (k:ks) (RootedHashTableTrie mx xs predSet) = do---   mFoundThere <- lookupWithLPT predSet f (k:|ks) xs---   pure $! getFirst $---       First ((\(pre,x,suff) -> (NE.toList pre,x,suff)) <$> mFoundThere)---    <> First ((\x -> ([],x,k:ks)) <$> mx)---- lookupWithLRPT :: ( Eq k---                   , Hashable k---                   , Typeable s---                   , Typeable k---                   , Typeable a---                   ) => (k -> k)---                     -> [k]---                     -> RootedHashTableTrie s k a---                     -> ST s (Maybe a)--- lookupWithLRPT _ [] (RootedHashTableTrie mx _ _) = pure mx--- lookupWithLRPT f (k:ks) (RootedHashTableTrie _ xs predSet) =---   lookupWithLPT predSet f (k:|ks) xs