diff options
author | Jasper Van der Jeugt <jaspervdj@gmail.com> | 2011-04-11 18:07:17 +0200 |
---|---|---|
committer | Jasper Van der Jeugt <jaspervdj@gmail.com> | 2011-04-11 18:07:17 +0200 |
commit | 15045d313c9d23014fcf284625a90d67d3a10d4d (patch) | |
tree | 391c9c2003030c6a6f2d5fddb6f2fd027c144867 /src/Hakyll/Core/Identifier | |
parent | 9d42e54119ac22915f371597ebd9247a644a605a (diff) | |
download | hakyll-15045d313c9d23014fcf284625a90d67d3a10d4d.tar.gz |
Add identifierGroup, clean up Pattern API
Diffstat (limited to 'src/Hakyll/Core/Identifier')
-rw-r--r-- | src/Hakyll/Core/Identifier/Pattern.hs | 33 |
1 files changed, 10 insertions, 23 deletions
diff --git a/src/Hakyll/Core/Identifier/Pattern.hs b/src/Hakyll/Core/Identifier/Pattern.hs index 8f3ac01..348ef46 100644 --- a/src/Hakyll/Core/Identifier/Pattern.hs +++ b/src/Hakyll/Core/Identifier/Pattern.hs @@ -40,7 +40,6 @@ module Hakyll.Core.Identifier.Pattern , filterMatches , capture , fromCapture - , fromCaptureString , fromCaptures ) where @@ -126,9 +125,9 @@ splits = inits &&& tails >>> uncurry zip >>> reverse -- | Match a glob against a pattern, generating a list of captures -- -capture :: Pattern -> Identifier -> Maybe [Identifier] -capture (Glob p) (Identifier i) = fmap (map Identifier) $ capture' p i -capture (Predicate _) _ = Nothing +capture :: Pattern -> Identifier -> Maybe [String] +capture (Glob p) (Identifier _ i) = capture' p i +capture (Predicate _) _ = Nothing -- | Internal verion of 'capture' -- @@ -152,44 +151,32 @@ capture' (CaptureMany : ms) str = -- -- Example: -- --- > fromCapture (parseGlob "tags/*") (parseIdentifier "foo") +-- > fromCapture (parseGlob "tags/*") "foo" -- -- Result: -- -- > "tags/foo" -- -fromCapture :: Pattern -> Identifier -> Identifier +fromCapture :: Pattern -> String -> Identifier fromCapture pattern = fromCaptures pattern . repeat --- | Simplified version of 'fromCapture' which takes a 'String' instead of an --- 'Identifier' --- --- > fromCaptureString (parseGlob "tags/*") "foo" --- --- Result: --- --- > "tags/foo" --- -fromCaptureString :: Pattern -> String -> Identifier -fromCaptureString pattern = fromCapture pattern . parseIdentifier - -- | Create an identifier from a pattern by filling in the captures with the -- given list of strings -- -fromCaptures :: Pattern -> [Identifier] -> Identifier -fromCaptures (Glob p) = fromCaptures' p +fromCaptures :: Pattern -> [String] -> Identifier +fromCaptures (Glob p) = Identifier Nothing . fromCaptures' p fromCaptures (Predicate _) = error $ "Hakyll.Core.Identifier.Pattern.fromCaptures: fromCaptures called on a " ++ "predicate instead of a glob" -- | Internally used version of 'fromCaptures' -- -fromCaptures' :: [GlobComponent] -> [Identifier] -> Identifier +fromCaptures' :: [GlobComponent] -> [String] -> String fromCaptures' [] _ = mempty fromCaptures' (m : ms) [] = case m of - Literal l -> Identifier l `mappend` fromCaptures' ms [] + Literal l -> l `mappend` fromCaptures' ms [] _ -> error $ "Hakyll.Core.Identifier.Pattern.fromCaptures': " ++ "identifier list exhausted" fromCaptures' (m : ms) ids@(i : is) = case m of - Literal l -> Identifier l `mappend` fromCaptures' ms ids + Literal l -> l `mappend` fromCaptures' ms ids _ -> i `mappend` fromCaptures' ms is |