Sha256: 6aa420dc07326b46be584384d53e8fc38f3821ca43edaf3c4683416e80a9292c

Contents?: true

Size: 1.19 KB

Versions: 17

Compression:

Stored size: 1.19 KB

Contents

# encoding: utf-8

module Nanoc::Helpers

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

    # 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.
    #
    # @return [Array] The breadcrumbs, starting with the root item and ending
    #   with the item itself
    def breadcrumbs_trail
      breadcrumbs_for_identifier(@item.identifier)
    end

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

    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

  end

end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
nanoc-3.6.1 lib/nanoc/helpers/breadcrumbs.rb
nanoc-3.6.0 lib/nanoc/helpers/breadcrumbs.rb
nanoc-3.5.0 lib/nanoc/helpers/breadcrumbs.rb
nanoc-3.5.0b2 lib/nanoc/helpers/breadcrumbs.rb
nanoc-3.5.0b1 lib/nanoc/helpers/breadcrumbs.rb
nanoc-3.4.3 lib/nanoc/helpers/breadcrumbs.rb
nanoc-3.4.2 lib/nanoc/helpers/breadcrumbs.rb
nanoc-3.4.1 lib/nanoc/helpers/breadcrumbs.rb
nanoc-3.4.0 lib/nanoc/helpers/breadcrumbs.rb
nanoc-3.3.7 lib/nanoc/helpers/breadcrumbs.rb
nanoc-3.3.6 lib/nanoc/helpers/breadcrumbs.rb
nanoc-3.3.5 lib/nanoc/helpers/breadcrumbs.rb
nanoc-3.3.4 lib/nanoc/helpers/breadcrumbs.rb
nanoc-3.3.3 lib/nanoc/helpers/breadcrumbs.rb
nanoc-3.3.2 lib/nanoc/helpers/breadcrumbs.rb
nanoc-3.3.1 lib/nanoc/helpers/breadcrumbs.rb
nanoc-3.3.0 lib/nanoc/helpers/breadcrumbs.rb