lib/nanoc/helpers/breadcrumbs.rb in nanoc-3.6.1 vs lib/nanoc/helpers/breadcrumbs.rb in nanoc-3.6.2

- old
+ new

@@ -13,27 +13,22 @@ # 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 + trail = [] + idx_start = 0 - def item_with_identifier(identifier) - @identifier_cache ||= {} - @identifier_cache[identifier] ||= begin - @items.find { |i| i.identifier == identifier } - end - end + loop do + idx = @item.identifier.index('/', idx_start) + break if idx.nil? - 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 + idx_start = idx+1 + identifier = @item.identifier[0..idx] + trail << @items[identifier] end + + trail end end end