Module: Nanoc3::Helpers::Tagging

Includes:
HTMLEscape
Defined in:
lib/nanoc3/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

#items_with_tag(tag) ⇒ Array

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/nanoc3/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/nanoc3/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

#tags_for(item, params = {}) ⇒ String

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/nanoc3/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? or item[:tags].empty?
    none_text
  else
    item[:tags].map { |tag| link_for_tag(tag, base_url) }.join(separator)
  end
end