_includes/components/breadcrumbs.html in just-the-docs-0.9.0 vs _includes/components/breadcrumbs.html in just-the-docs-0.10.0
- old
+ new
@@ -1,144 +1,96 @@
{%- comment -%}
Include as: {%- include components/breadcrumbs.html -%}
Depends on: page, site.
+ Includes: components/site_nav.html.
Results in: HTML for the breadcrumbs component.
Overwrites:
- node, pages_list, parent_page, grandparent_page.
+ nav_list_link, site_nav, nav_list_simple, nav_list_link_class, nav_category,
+ nav_anchor_splits, nav_breadcrumbs, nav_split, nav_split_next, nav_split_test,
+ nav_breadcrumb_link, nav_list_end_less, nav_list_end_count, nav_end_index, nav_breadcrumb.
{%- endcomment -%}
-{%- if page.url != "/" and page.parent -%}
+{%- if page.url != "/" and page.parent and page.title -%}
{%- capture nav_list_link -%}
<a href="{{ page.url | relative_url }}" class="nav-list-link">
{%- endcapture -%}
{%- capture site_nav -%}
-{%- include_cached components/site_nav.html -%}
+{%- include_cached components/site_nav.html all=true -%}
{%- endcapture -%}
-{%- if site_nav contains nav_list_link -%}
+{%- capture nav_list_simple -%}
+<ul class="nav-list">
+{%- endcapture -%}
- {%- capture nav_list_simple -%}
- <ul class="nav-list">
- {%- endcapture -%}
+{%- capture nav_list_link_class %} class="nav-list-link">
+{%- endcapture -%}
- {%- capture nav_list_link_class %} class="nav-list-link">
- {%- endcapture -%}
+{%- capture nav_category -%}
+<div class="nav-category">
+{%- endcapture -%}
- {%- capture nav_category -%}
- <div class="nav-category">
- {%- endcapture -%}
+{%- assign nav_anchor_splits =
+ site_nav | split: nav_list_link |
+ first | split: nav_category |
+ last | split: "</a>" -%}
- {%- assign nav_anchor_splits =
- site_nav | split: nav_list_link |
- first | split: nav_category |
- last | split: "</a>" -%}
-
- {%- comment -%}
- The ordinary pages (if any) and the collections pages (if any) are separated by
- occurrences of nav_category.
-
- Any ancestor nav-links of the page are contained in the last group of pages,
- immediately preceding nav-lists. After splitting at "</a>", the anchor that
- was split is a potential ancestor link when the following split starts with
- a nav-list.
-
- The array nav_breadcrumbs is the stack of current potential ancestors of the
- current page. A split that contains one or more "</ul>"s requires that number
- of potential ancestors to be popped from the stack.
-
- The number of occurrences of a string in nav_split_next is computed by removing
- them all, then dividing the resulting size difference by the length of the string.
- {%- endcomment %}
-
- {%- assign nav_breadcrumbs = "" | split: "" -%}
-
- {%- for nav_split in nav_anchor_splits -%}
- {%- unless forloop.last -%}
-
- {%- assign nav_split_next = nav_anchor_splits[forloop.index] | strip -%}
-
- {%- assign nav_split_test =
- nav_split_next | remove_first: nav_list_simple | prepend: nav_list_simple -%}
- {%- if nav_split_test == nav_split_next -%}
- {%- assign nav_breadcrumb_link =
- nav_split | split: "<a " | last | prepend: "<a " |
- replace: nav_list_link_class, ">" | append: "</a>" -%}
- {%- assign nav_breadcrumbs = nav_breadcrumbs | push: nav_breadcrumb_link -%}
- {%- endif -%}
-
- {%- if nav_split_next contains "</ul>" -%}
- {%- assign nav_list_end_less = nav_split_next | remove: "</ul>" -%}
- {%- assign nav_list_end_count =
- nav_split_next.size | minus: nav_list_end_less.size | divided_by: 5 -%}
- {% for nav_end_index in (1..nav_list_end_count) %}
- {%- assign nav_breadcrumbs = nav_breadcrumbs | pop -%}
- {%- endfor -%}
- {%- endif -%}
-
- {%- endunless -%}
- {%- endfor -%}
-
- {%- assign nav_parent_link = nav_breadcrumbs[-1] -%}
- {%- assign nav_grandparent_link = nav_breadcrumbs[-2] -%}
-
-{%- else -%}
-
- {%- comment -%}
- Pages whose links are excluded from the main navigation may still have
- breadcrumbs. Determining them appears to require inspecting the front matter
- of all the pages in the same group. For sites with 100s of pages, this is too
- inefficient in Jekyll 3 (also when the for-loop is replaced by where-filters).
- {%- endcomment -%}
-
- {%- assign pages_list = site[page.collection] | default: site.html_pages -%}
+{%- comment -%}
+ The ordinary pages (if any) and the collections pages (if any) are separated by
+ occurrences of nav_category.
- {%- assign parent_page = nil -%}
- {%- assign grandparent_page = nil -%}
-
- {%- for node in pages_list -%}
+ Any ancestor nav-links of the page are contained in the last group of pages,
+ immediately preceding nav-lists. After splitting at "</a>", the anchor that
+ was split is a potential ancestor link when the following split starts with
+ a nav-list.
- {%- if node.has_children and page.grand_parent -%}
+ The array nav_breadcrumbs is the stack of current potential ancestors of the
+ current page. A split that contains one or more "</ul>"s requires that number
+ of potential ancestors to be popped from the stack.
+
+ The number of occurrences of a string in nav_split_next is computed by removing
+ them all, then dividing the resulting size difference by the length of the string.
+{%- endcomment %}
- {%- if node.title == page.parent and node.parent == page.grand_parent -%}
- {%- assign parent_page = node -%}
- {%- endif -%}
- {%- if node.title == page.grand_parent -%}
- {%- assign grandparent_page = node -%}
- {%- endif -%}
- {%- if parent_page and grandparent_page -%}
- {%- break -%}
- {%- endif -%}
+{%- assign nav_breadcrumbs = "" | split: "" -%}
- {%- elsif node.has_children and node.title == page.parent and node.parent == nil -%}
+{%- for nav_split in nav_anchor_splits -%}
+{%- unless forloop.last -%}
- {%- assign parent_page = node -%}
- {%- break -%}
+{%- assign nav_split_next = nav_anchor_splits[forloop.index] | strip -%}
- {%- endif -%}
+{%- assign nav_split_test =
+ nav_split_next | remove_first: nav_list_simple | prepend: nav_list_simple -%}
+{%- if nav_split_test == nav_split_next -%}
+ {%- assign nav_breadcrumb_link =
+ nav_split | split: "<a " | last | prepend: "<a " |
+ replace: nav_list_link_class, ">" | append: "</a>" -%}
+ {%- assign nav_breadcrumbs = nav_breadcrumbs | push: nav_breadcrumb_link -%}
+{%- endif -%}
+{%- if nav_split_next contains "</ul>" -%}
+ {%- assign nav_list_end_less = nav_split_next | remove: "</ul>" -%}
+ {%- assign nav_list_end_count =
+ nav_split_next.size | minus: nav_list_end_less.size | divided_by: 5 -%}
+ {% for nav_end_index in (1..nav_list_end_count) %}
+ {%- assign nav_breadcrumbs = nav_breadcrumbs | pop -%}
{%- endfor -%}
-
- {%- capture nav_parent_link -%}
- <a href="{{ parent_page.url | relative_url }}">{{ page.parent }}</a>
- {%- endcapture -%}
-
- {%- if page.grand_parent %}
- {%- capture nav_grandparent_link -%}
- <a href="{{ grandparent_page.url | relative_url }}">{{ page.grand_parent }}</a>
- {%- endcapture -%}
- {%- endif -%}
-
{%- endif -%}
+{%- endunless -%}
+{%- endfor -%}
+
<nav aria-label="Breadcrumb" class="breadcrumb-nav">
<ol class="breadcrumb-nav-list">
- {%- if nav_grandparent_link %}
- <li class="breadcrumb-nav-list-item">{{ nav_grandparent_link }}</li>
- {%- endif %}
- <li class="breadcrumb-nav-list-item">{{ nav_parent_link }}</li>
+ {%- for nav_breadcrumb in nav_breadcrumbs %}
+ <li class="breadcrumb-nav-list-item">{{ nav_breadcrumb }}</li>
+ {%- endfor %}
<li class="breadcrumb-nav-list-item"><span>{{ page.title }}</span></li>
</ol>
</nav>
+
+{% if site.nav_error_report %}
+{{ nav_error_report }}
+{% endif %}
{%- endif -%}