yesod-core 1.6.7 → 1.6.8
raw patch · 4 files changed
+23/−4 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- ChangeLog.md +4/−0
- Yesod/Routes/Parse.hs +10/−1
- test/RouteSpec.hs +8/−2
- yesod-core.cabal +1/−1
ChangeLog.md view
@@ -1,5 +1,9 @@ # ChangeLog for yesod-core +## 1.6.8+* In the route syntax, allow trailing backslashes to indicate line+ continuation. [#1558](https://github.com/yesodweb/yesod/pull/1558)+ ## 1.6.7 * If no matches are found, `selectRep` chooses first representation regardless
Yesod/Routes/Parse.hs view
@@ -65,7 +65,7 @@ -- invalid input. resourcesFromString :: String -> [ResourceTree String] resourcesFromString =- fst . parse 0 . filter (not . all (== ' ')) . lines . filter (/= '\r')+ fst . parse 0 . filter (not . all (== ' ')) . foldr lineContinuations [] . lines . filter (/= '\r') where parse _ [] = ([], []) parse indent (thisLine:otherLines)@@ -285,3 +285,12 @@ _ -> error $ "Unclosed bracket ('{'): " ++ str dropBracket x = x +-- | If this line ends with a backslash, concatenate it together with the next line.+--+-- @since 1.6.8+lineContinuations :: String -> [String] -> [String]+lineContinuations this [] = [this]+lineContinuations this below@(next:rest) = case unsnoc this of+ Just (this', '\\') -> (this'++next):rest+ _ -> this:below+ where unsnoc s = if null s then Nothing else Just (init s, last s)
test/RouteSpec.hs view
@@ -17,7 +17,7 @@ import Data.Text (Text, pack, unpack, singleton) import Yesod.Routes.Class hiding (Route) import qualified Yesod.Routes.Class as YRC-import Yesod.Routes.Parse (parseRoutesNoCheck, parseTypeTree, TypeTree (..))+import Yesod.Routes.Parse (parseRoutesFile, parseRoutesNoCheck, parseTypeTree, TypeTree (..)) import Yesod.Routes.Overlap (findOverlapNames) import Yesod.Routes.TH hiding (Dispatch) import Language.Haskell.TH.Syntax@@ -219,10 +219,16 @@ it "routes to subparam" $ disp "PUT" ["subparam", "6", "q"] @?= (pack "subparam 6 q", Just $ SubparamR 6 $ ParamRoute 'q') - describe "parsing" $ do+ describe "route parsing" $ do it "subsites work" $ do parseRoute ([pack "subsite", pack "foo"], [(pack "bar", pack "baz")]) @?= Just (SubsiteR $ MySubRoute ([pack "foo"], [(pack "bar", pack "baz")]))++ describe "routing table parsing" $ do+ it "recognizes trailing backslashes as line continuation directives" $ do+ let routes :: [ResourceTree String]+ routes = $(parseRoutesFile "test/fixtures/routes_with_line_continuations")+ length routes @?= 3 describe "overlap checking" $ do it "catches overlapping statics" $ do
yesod-core.cabal view
@@ -1,5 +1,5 @@ name: yesod-core-version: 1.6.7+version: 1.6.8 license: MIT license-file: LICENSE author: Michael Snoyman <michael@snoyman.com>