diff options
author | Jasper Van der Jeugt <jaspervdj@gmail.com> | 2011-04-06 09:39:20 +0200 |
---|---|---|
committer | Jasper Van der Jeugt <jaspervdj@gmail.com> | 2011-04-06 09:39:20 +0200 |
commit | 78dbe8a3d127546c8c0cc5b464da0f2b8af7c9b0 (patch) | |
tree | f01f1739b312d8c5ab8865a7d821fd2ac4f0169f /src | |
parent | 3d2b2506d040546d74e83f6d9b8b4e0c45026f09 (diff) | |
download | hakyll-78dbe8a3d127546c8c0cc5b464da0f2b8af7c9b0.tar.gz |
Add regex predicate helper
Diffstat (limited to 'src')
-rw-r--r-- | src/Hakyll/Core/Identifier/Pattern.hs | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/Hakyll/Core/Identifier/Pattern.hs b/src/Hakyll/Core/Identifier/Pattern.hs index 28e23ad..8f3ac01 100644 --- a/src/Hakyll/Core/Identifier/Pattern.hs +++ b/src/Hakyll/Core/Identifier/Pattern.hs @@ -35,6 +35,7 @@ module Hakyll.Core.Identifier.Pattern ( Pattern , parseGlob , predicate + , regex , matches , filterMatches , capture @@ -46,10 +47,11 @@ module Hakyll.Core.Identifier.Pattern import Data.List (isPrefixOf, inits, tails) import Control.Arrow ((&&&), (>>>)) import Control.Monad (msum) -import Data.Maybe (isJust) +import Data.Maybe (isJust, fromMaybe) import Data.Monoid (Monoid, mempty, mappend) import GHC.Exts (IsString, fromString) +import Text.Regex.PCRE ((=~~)) import Hakyll.Core.Identifier @@ -96,6 +98,15 @@ parseGlob = Glob . parse' predicate :: (Identifier -> Bool) -> Pattern predicate = Predicate +-- | Create a 'Pattern' from a regex +-- +-- Example: +-- +-- > regex "^foo/[^x]*$ +-- +regex :: String -> Pattern +regex str = predicate $ fromMaybe False . (=~~ str) . toFilePath + -- | Check if an identifier matches a pattern -- matches :: Pattern -> Identifier -> Bool |