hakyll-3.0.2.2: A simple static site generator library.

Hakyll.Core.Identifier.Pattern

Description

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 at most 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;
  • ** will match any identifier;
  • foo/** will match foo/bar and foo/bar/qux, but not bar/foo;
  • foo/*.html will match all HTML files in the foo/ directory.

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

Synopsis

Documentation

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

Example:

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

Result:

 "tags/foo"

fromCaptureString :: Pattern -> String -> IdentifierSource

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

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

Result:

 "tags/foo"

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

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