hakyll-2.4.3: A simple static site generator library.

Text.Hakyll.Tags

Description

Module containing some specialized functions to deal with tags. This Module follows certain conventions. Stick with them.

More concrete: all functions in this module assume that the tags are located in the tags field, and separated by commas. An example file foo.markdown could look like:

 ---
 author: Philip K. Dick
 title: Do androids dream of electric sheep?
 tags: future, science fiction, humanoid
 ---
 The novel is set in a post-apocalyptic near future, where the Earth and
 its populations have been damaged greatly by Nuclear...

All the following functions would work with such a format. In addition to tags, Hakyll also supports categories. The convention when using categories is to place pages in subdirectories.

An example, the page posts/coding/2010-01-28-hakyll-categories.markdown Tags or categories are read using the readTagMap and readCategoryMap functions. Because categories are implemented using tags - categories can be seen as tags, with the restriction that a page can only have one category - all functions for tags also work with categories.

When reading a TagMap (which is also used for category maps) using the readTagMap or readCategoryMap function, you also have to give a unique identifier to it. This identifier is simply for caching reasons, so Hakyll can tell different maps apart; it has no other use.

Synopsis

Documentation

type TagMap = Map String [HakyllAction () Context]Source

Type for a tag map.

This is a map associating tags or categories to the appropriate pages using that tag or category. In the case of categories, each path will only appear under one category - this is not the case with tags.

readTagMapSource

Arguments

:: String

Unique identifier for the map.

-> [FilePath]

Paths to get tags from.

-> HakyllAction () TagMap 

Read a TagMap, using the tags metadata field.

readCategoryMapSource

Arguments

:: String

Unique identifier for the map.

-> [FilePath]

Paths to get tags from.

-> HakyllAction () TagMap 

Read a TagMap, using the subdirectories the pages are placed in.

withTagMap :: HakyllAction () TagMap -> (String -> [HakyllAction () Context] -> Hakyll ()) -> Hakyll ()Source

Perform a Hakyll action on every item in the tag

renderTagCloudSource

Arguments

:: (String -> String)

Function to produce an url for a tag.

-> Float

Smallest font size, in percent.

-> Float

Biggest font size, in percent.

-> HakyllAction TagMap String 

Render a tag cloud.

renderTagLinksSource

Arguments

:: (String -> String)

Function to produce an url for a tag.

-> HakyllAction Context Context 

Render all tags to links.

On your site, it is nice if you can display the tags on a page, but naturally, most people would expect these are clickable.

So, this function takes a function to produce an url for a given tag, and applies it on all tags.

Note that it is your own responsibility to ensure a page with such an url exists.