hakyll- A simple static site generator library.



Module providing pattern matching and capturing on Identifiers.

A very simple pattern could be, for example, foo/bar. This pattern will only match the exact foo/bar identifier.

To match more than one identifier, there are different captures that one can use:

  • *: matches exactly one element of an identifier;
  • **: matches one or more elements of an identifier.

Some examples:

  • foo/* will match foo/bar and foo/foo, but not foo/bar/qux nor foo;
  • ** will match any non-empty identifier;
  • foo/** will match foo/bar and foo/bar/qux, but not bar/foo nor foo;

A small warning: patterns are not globs. Using foo/*.markdown will not do what you probably intended, as it will only match the file which is literally called foo/*.markdown. Remember that these captures only work on elements of identifiers as a whole; not on parts of these elements.

Furthermore, the match function allows the user to get access to the elements captured by the capture elements in the pattern.



data Pattern Source

Type that allows matching on identifiers

parsePattern :: String -> PatternSource

Parse a pattern from a string

match :: Pattern -> Identifier -> Maybe [Identifier]Source

Match an identifier against a pattern, generating a list of captures

doesMatch :: Pattern -> Identifier -> BoolSource

Check if an identifier matches a pattern

matches :: Pattern -> [Identifier] -> [Identifier]Source

Given a list of identifiers, retain only those who match the given pattern

fromCapture :: Pattern -> Identifier -> IdentifierSource

Create an identifier from a pattern by filling in the captures with a given string


 fromCapture (parsePattern "tags/*") (parseIdentifier "foo")



fromCaptureString :: Pattern -> String -> IdentifierSource

Simplified version of fromCapture which takes a String instead of an Identifier

 fromCaptureString (parsePattern "tags/*") "foo"



fromCaptures :: Pattern -> [Identifier] -> IdentifierSource

Create an identifier from a pattern by filling in the captures with the given list of strings