Module: Nanoc3::Helpers::Breadcrumbs

Defined in:
lib/nanoc3/helpers/breadcrumbs.rb

Overview

Provides support for breadcrumbs, which allow the user to go up in the page hierarchy.

Instance Method Summary collapse

Instance Method Details



28
29
30
31
32
33
34
35
36
# File 'lib/nanoc3/helpers/breadcrumbs.rb', line 28

def breadcrumbs_for_identifier(identifier)
  @breadcrumbs_cache ||= {}
  @breadcrumbs_cache[identifier] ||= begin
    head = (identifier == '/' ? [] :  breadcrumbs_for_identifier(identifier.sub(/[^\/]+\/$/, '')) )
    tail = [ item_with_identifier(identifier) ]

    head + tail
  end
end

Creates a breadcrumb trail leading from the current item to its parent, to its parent’s parent, etc, until the root item is reached. This function does not require that each intermediate item exist; for example, if there is no ‘/foo/` item, breadcrumbs for a `/foo/bar/` item will contain a `nil` element.

Returns:

  • (Array)

    The breadcrumbs, starting with the root item and ending with the item itself



17
18
19
# File 'lib/nanoc3/helpers/breadcrumbs.rb', line 17

def breadcrumbs_trail
  breadcrumbs_for_identifier(@item.identifier)
end

#item_with_identifier(identifier) ⇒ Object



21
22
23
24
25
26
# File 'lib/nanoc3/helpers/breadcrumbs.rb', line 21

def item_with_identifier(identifier)
  @identifier_cache ||= {}
  @identifier_cache[identifier] ||= begin
    @items.find { |i| i.identifier == identifier }
  end
end