Module: Nanoc::Helpers::Tagging

Includes:
HTMLEscape
Defined in:
lib/nanoc/helpers/tagging.rb

Overview

Provides support for managing tags added to items.

To add tags to items, set the tags attribute to an array of tags that should be applied to the item.

Examples:

Adding tags to an item


tags: [ 'foo', 'bar', 'baz' ]

Instance Method Summary (collapse)

Methods included from HTMLEscape

#html_escape

Methods included from Capturing

#capture, #content_for

Instance Method Details

- (Array) items_with_tag(tag)

Find all items with the given tag.

Parameters:

  • tag (String)

    The tag for which to find all items

Returns:

  • (Array)

    All items with the given tag



50
51
52
# File 'lib/nanoc/helpers/tagging.rb', line 50

def items_with_tag(tag)
  @items.select { |i| (i[:tags] || []).include?(tag) }
end

Returns a link to to the specified tag. The link is marked up using the rel-tag microformat. The href attribute of the link will be HTML- escaped, as will the content of the a element.

Parameters:

  • tag (String)

    The name of the tag, which should consist of letters and numbers (no spaces, slashes, or other special characters).

  • base_url (String)

    The URL to which the tag will be appended to construct the link URL. This URL must have a trailing slash.

Returns:

  • (String)

    A link for the given tag and the given base URL



65
66
67
# File 'lib/nanoc/helpers/tagging.rb', line 65

def link_for_tag(tag, base_url)
  %[<a href="#{h base_url}#{h tag}" rel="tag">#{h tag}</a>]
end

- (String) tags_for(item, params = {})

Returns a formatted list of tags for the given item as a string. The tags will be linked using the #link_for_tag function; the HTML-escaping rules for #link_for_tag apply here as well.

Parameters:

  • params (Hash) (defaults to: {})

    a customizable set of options

Options Hash (params):

  • base_url (String) — default: "http://technorati.com/tag/"

    The URL to which the tag will be appended to construct the link URL. This URL must have a trailing slash.

  • none_text (String) — default: "(none)"

    The text to display when the item has no tags

  • separator (String) — default: ", "

    The separator to put between tags

Returns:

  • (String)

    A hyperlinked list of tags for the given item



33
34
35
36
37
38
39
40
41
42
43
# File 'lib/nanoc/helpers/tagging.rb', line 33

def tags_for(item, params = {})
  base_url  = params[:base_url]  || 'http://technorati.com/tag/'
  none_text = params[:none_text] || '(none)'
  separator = params[:separator] || ', '

  if item[:tags].nil? || item[:tags].empty?
    none_text
  else
    item[:tags].map { |tag| link_for_tag(tag, base_url) }.join(separator)
  end
end