on master help sign in
Add `gsubRoute`
commitd460fd88d13984aa0e851527f7ff65065230c411 authorJasper Van der Jeugt <jaspervdj@gmail.com> dateMon 28 Feb 2011, 22:40 (16 years ago) parent49989ea
2 files changed+21
src/Hakyll/Core/Routes.hs+18 tests/Hakyll/Core/Routes/Tests.hs+3
src/Hakyll/Core/Routes.hs+18
@@ -32,6 +32,7 @@ module Hakyll.Core.Routes
3232 , setExtension
3333 , ifMatch
3434 , customRoute
35+ , gsubRoute
3536 ) where
3637
3738import Data.Monoid (Monoid, mempty, mappend)
@@ -40,6 +41,7 @@ import System.FilePath (replaceExtension)
4041
4142import Hakyll.Core.Identifier
4243import Hakyll.Core.Identifier.Pattern
44+import Hakyll.Core.Util.String
4345
4446-- | Type used for a route
4547--
@@ -94,3 +96,19 @@ ifMatch pattern (Routes route) = Routes $ \id' ->
9496--
9597customRoute :: (Identifier -> FilePath) -> Routes
9698customRoute f = Routes $ Just . f
99+
100+-- | Create a gsub route
101+--
102+-- Example:
103+--
104+-- > runRoutes (gsubRoute "rss/" (const "")) "tags/rss/bar.xml"
105+--
106+-- Result:
107+--
108+-- > Just "tags/bar.xml"
109+--
110+gsubRoute :: String -- ^ Pattern
111+ -> (String -> String) -- ^ Replacement
112+ -> Routes -- ^ Resulting route
113+gsubRoute pattern replacement = customRoute $
114+ replaceAll pattern replacement . toFilePath
tests/Hakyll/Core/Routes/Tests.hs+3
@@ -15,4 +15,7 @@ tests = fromAssertions "runRoutes"
1515 , Just "foo.html" @=? runRoutes (setExtension ".html") "foo"
1616 , Just "foo.html" @=? runRoutes (setExtension "html") "foo.markdown"
1717 , Just "foo.html" @=? runRoutes (setExtension ".html") "foo.markdown"
18+
19+ , Just "tags/bar.xml" @=?
20+ runRoutes (gsubRoute "rss/" (const "")) "tags/rss/bar.xml"
1821 ]