Update allejo/jekyll-toc to v1.1.0, skip headings without an ID (#2752)

* Update allejo/jekyll-toc to v1.1.0, skip headings without an ID

https://github.com/allejo/jekyll-toc/releases/tag/v1.1.0

* Update CHANGELOG and history
This commit is contained in:
iBug 2020-12-11 03:41:57 +08:00 committed by GitHub
parent e61476d0a9
commit faf86f59e9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 92 additions and 78 deletions

View file

@ -9,6 +9,7 @@
- Update Indonesian localized UI text strings. [#2731](https://github.com/mmistakes/minimal-mistakes/pull/2731) - Update Indonesian localized UI text strings. [#2731](https://github.com/mmistakes/minimal-mistakes/pull/2731)
- Update remote theme documentation. [#2734](https://github.com/mmistakes/minimal-mistakes/pull/2734) - Update remote theme documentation. [#2734](https://github.com/mmistakes/minimal-mistakes/pull/2734)
- Update allejo/jekyll-toc to v1.1.0, skip headings without an ID. [#2752](https://github.com/mmistakes/minimal-mistakes/pull/2752)
## [4.21.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.21.0) ## [4.21.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.21.0)
@ -17,7 +18,7 @@
- Fix greedy navigation by improving reliability of remaining space for visible links. [#2664](https://github.com/mmistakes/minimal-mistakes/issues/2664) - Fix greedy navigation by improving reliability of remaining space for visible links. [#2664](https://github.com/mmistakes/minimal-mistakes/issues/2664)
- Collapse white-space in `figure` helper to fix issues when used in Markdown ordered and unordered lists. [#2697](https://github.com/mmistakes/minimal-mistakes/pull/2697) - Collapse white-space in `figure` helper to fix issues when used in Markdown ordered and unordered lists. [#2697](https://github.com/mmistakes/minimal-mistakes/pull/2697)
- Fix dead link to CI services in documentation. [#2635](https://github.com/mmistakes/minimal-mistakes/issues/2635) [#2692](https://github.com/mmistakes/minimal-mistakes/pull/2692) - Fix dead link to CI services in documentation. [#2635](https://github.com/mmistakes/minimal-mistakes/issues/2635) [#2692](https://github.com/mmistakes/minimal-mistakes/pull/2692)
- Fix a small type in documentation. [#2718](https://github.com/mmistakes/minimal-mistakes/pull/2718) - Fix a small typo in documentation. [#2718](https://github.com/mmistakes/minimal-mistakes/pull/2718)
### Enhancements ### Enhancements

View file

@ -24,7 +24,7 @@
OTHER DEALINGS IN THE SOFTWARE. OTHER DEALINGS IN THE SOFTWARE.
{% endcomment %} {% endcomment %}
{% comment %} {% comment %}
Version 1.0.14 Version 1.1.0
https://github.com/allejo/jekyll-toc https://github.com/allejo/jekyll-toc
"...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe "...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe
@ -44,34 +44,51 @@
* ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list * ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list
* item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level * item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level
* submenu_class (string) : '' - add custom class(es) for each child group of headings; has support for '%level%' placeholder which is the current "submenu" heading level * submenu_class (string) : '' - add custom class(es) for each child group of headings; has support for '%level%' placeholder which is the current "submenu" heading level
* baseurl (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content * base_url (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content
* anchor_class (string) : '' - add custom class(es) for each anchor element * anchor_class (string) : '' - add custom class(es) for each anchor element
* skipNoIDs (bool) : false - skip headers that do not have an `id` attribute * skip_no_ids (bool) : false - skip headers that do not have an `id` attribute
Output: Output:
An ordered or unordered list representing the table of contents of a markdown block. This snippet will only An ordered or unordered list representing the table of contents of a markdown block. This snippet will only
generate the table of contents and will NOT output the markdown given to it generate the table of contents and will NOT output the markdown given to it
{% endcomment %} {% endcomment %}
{% capture my_toc %}{% endcapture %} {% capture newline %}
{% endcapture %}
{% assign newline = newline | rstrip %} <!-- Remove the extra spacing but preserve the newline -->
{% capture deprecation_warnings %}{% endcapture %}
{% if include.baseurl %}
{% capture deprecation_warnings %}{{ deprecation_warnings }}<!-- jekyll-toc :: "baseurl" has been deprecated, use "base_url" instead -->{{ newline }}{% endcapture %}
{% endif %}
{% if include.skipNoIDs %}
{% capture deprecation_warnings %}{{ deprecation_warnings }}<!-- jekyll-toc :: "skipNoIDs" has been deprecated, use "skip_no_ids" instead -->{{ newline }}{% endcapture %}
{% endif %}
{% capture jekyll_toc %}{% endcapture %}
{% assign orderedList = include.ordered | default: false %} {% assign orderedList = include.ordered | default: false %}
{% assign skipNoIDs = include.skipNoIDs | default: false %} {% assign baseURL = include.base_url | default: include.baseurl | default: '' %}
{% assign skipNoIDs = include.skip_no_ids | default: include.skipNoIDs | default: false %}
{% assign minHeader = include.h_min | default: 1 %} {% assign minHeader = include.h_min | default: 1 %}
{% assign maxHeader = include.h_max | default: 6 %} {% assign maxHeader = include.h_max | default: 6 %}
{% assign nodes = include.html | split: '<h' %} {% assign nodes = include.html | strip | split: '<h' %}
{% assign firstHeader = true %}
{% assign previousLevel = 0 %}
{% capture listModifier %}{% if orderedList %}1.{% else %}-{% endif %}{% endcapture %} {% assign firstHeader = true %}
{% assign currLevel = 0 %}
{% assign lastLevel = 0 %}
{% capture listModifier %}{% if orderedList %}ol{% else %}ul{% endif %}{% endcapture %}
{% for node in nodes %} {% for node in nodes %}
{% if node == "" %} {% if node == "" %}
{% continue %} {% continue %}
{% endif %} {% endif %}
{% assign headerLevel = node | replace: '"', '' | slice: 0, 1 | times: 1 %} {% assign currLevel = node | replace: '"', '' | slice: 0, 1 | times: 1 %}
{% if headerLevel < minHeader or headerLevel > maxHeader %} {% if currLevel < minHeader or currLevel > maxHeader %}
{% continue %} {% continue %}
{% endif %} {% endif %}
@ -79,92 +96,87 @@
{% assign _idWorkspace = _workspace[0] | split: 'id="' %} {% assign _idWorkspace = _workspace[0] | split: 'id="' %}
{% assign _idWorkspace = _idWorkspace[1] | split: '"' %} {% assign _idWorkspace = _idWorkspace[1] | split: '"' %}
{% assign html_id = _idWorkspace[0] %} {% assign htmlID = _idWorkspace[0] %}
{% assign _classWorkspace = _workspace[0] | split: 'class="' %} {% assign _classWorkspace = _workspace[0] | split: 'class="' %}
{% assign _classWorkspace = _classWorkspace[1] | split: '"' %} {% assign _classWorkspace = _classWorkspace[1] | split: '"' %}
{% assign html_class = _classWorkspace[0] %} {% assign htmlClass = _classWorkspace[0] %}
{% if html_class contains "no_toc" %} {% if htmlClass contains "no_toc" %}
{% continue %} {% continue %}
{% endif %} {% endif %}
{% if firstHeader %} {% if firstHeader %}
{% assign firstHeader = false %} {% assign minHeader = currLevel %}
{% assign minHeader = headerLevel %}
{% endif %} {% endif %}
{% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %} {% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %}
{% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %}
{% assign indentAmount = headerLevel | minus: minHeader %}
{% assign space = '' %}
{% for i in (1..indentAmount) %}
{% assign space = space | prepend: ' ' %}
{% endfor %}
{% if include.item_class and include.item_class != blank %} {% if include.item_class and include.item_class != blank %}
{% capture listItemClass %}{:.{{ include.item_class | replace: '%level%', headerLevel }}}{% endcapture %} {% capture listItemClass %} class="{{ include.item_class | replace: '%level%', currLevel | split: '.' | join: ' ' }}"{% endcapture %}
{% endif %} {% endif %}
{% capture anchor_body %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %} {% if include.submenu_class and include.submenu_class != blank %}
{% capture anchor_body %}{{ anchor_body | replace: "|", "\|" }}{% endcapture %} {% assign subMenuLevel = currLevel | minus: 1 %}
{% capture subMenuClass %} class="{{ include.submenu_class | replace: '%level%', subMenuLevel | split: '.' | join: ' ' }}"{% endcapture %}
{% endif %}
{% if html_id %} {% capture anchorBody %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %}
{% capture list_item %}[{{ anchor_body }}]({% if include.baseurl %}{{ include.baseurl }}{% endif %}#{{ html_id }}){% endcapture %}
{% if htmlID %}
{% capture anchorAttributes %} href="{% if baseURL %}{{ baseURL }}{% endif %}#{{ htmlID }}"{% endcapture %}
{% if include.anchor_class %}
{% capture anchorAttributes %}{{ anchorAttributes }} class="{{ include.anchor_class | split: '.' | join: ' ' }}"{% endcapture %}
{% endif %}
{% capture listItem %}<a{{ anchorAttributes }}>{{ anchorBody }}</a>{% endcapture %}
{% elsif skipNoIDs == true %} {% elsif skipNoIDs == true %}
{% continue %} {% continue %}
{% else %} {% else %}
{% capture list_item %}{{ anchor_body }}{% endcapture %} {% capture listItem %}{{ anchorBody }}{% endcapture %}
{% endif %} {% endif %}
<!-- {% if currLevel > lastLevel %}
If we have a submenu class and we're unindenting, then we need to add a "closing" class to this group of bullet {% capture jekyll_toc %}{{ jekyll_toc }}<{{ listModifier }}{{ subMenuClass }}>{% endcapture %}
points {% elsif currLevel < lastLevel %}
--> {% assign repeatCount = lastLevel | minus: currLevel %}
{% if include.submenu_class and previousLevel > indentAmount %}
<!--
`space` is the current indentation, so we if want to close off the previous grouping, we need to add one
more level of indentation
-->
{% assign submenuIndentation = space | prepend: ' ' %}
{% capture my_toc %}{{ my_toc }} {% for i in (1..repeatCount) %}
{{ submenuIndentation }}{:.{{ include.submenu_class | replace: '%level%', previousLevel }}}{% endcapture %} {% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %}
{% endif %}
{% capture my_toc %}{{ my_toc }}
{{ space }}{{ listModifier }} {{ listItemClass }} {{ list_item }}{% if include.anchor_class %}{:.{{ include.anchor_class }}}{% endif %}{% endcapture %}
{% assign previousLevel = indentAmount %}
{% endfor %}
{% if include.class and include.class != blank %}
{% capture my_toc %}{:.{{ include.class }}}
{{ my_toc | lstrip }}{% endcapture %}
{% endif %}
{% if include.id %}
{% capture my_toc %}{: #{{ include.id }}}
{{ my_toc | lstrip }}{% endcapture %}
{% endif %}
<!--
If we have a submenu class, we need to close off all the remaining list item groups so that submenu classes are
applied correctly to them
-->
{% if include.submenu_class != blank %}
<!-- The last level of indentation that we were at, we need to work backwards from there closing each group -->
{% for i in (1..previousLevel) %}
{% assign lvl = previousLevel | plus: 1 | minus: i %} <!-- Invert the indent level based on `i` -->
{% assign closingSpace = '' %}
{% for i in (1..lvl) %}
{% assign closingSpace = closingSpace | prepend: ' ' %}
{% endfor %} {% endfor %}
{% capture my_toc %}{{ my_toc }} {% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %}
{{ closingSpace }}{:.{{ include.submenu_class | replace: '%level%', lvl }}}{% endcapture %} {% else %}
{% endfor %} {% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %}
{% endif %}
{% capture jekyll_toc %}{{ jekyll_toc }}<li{{ listItemClass }}>{{ listItem }}{% endcapture %}
{% assign lastLevel = currLevel %}
{% assign firstHeader = false %}
{% endfor %}
{% assign repeatCount = minHeader | minus: 1 %}
{% assign repeatCount = lastLevel | minus: repeatCount %}
{% for i in (1..repeatCount) %}
{% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %}
{% endfor %}
{% if jekyll_toc != '' %}
{% assign rootAttributes = '' %}
{% if include.class and include.class != blank %}
{% capture rootAttributes %} class="{{ include.class | split: '.' | join: ' ' }}"{% endcapture %}
{% endif %}
{% if include.id and include.id != blank %}
{% capture rootAttributes %}{{ rootAttributes }} id="{{ include.id }}"{% endcapture %}
{% endif %}
{% if rootAttributes %}
{% assign nodes = jekyll_toc | split: '>' %}
{% capture jekyll_toc %}<{{ listModifier }}{{ rootAttributes }}>{{ nodes | shift | join: '>' }}>{% endcapture %}
{% endif %}
{% endif %} {% endif %}
{% endcapture %}{% assign tocWorkspace = '' %}{{ my_toc | markdownify | strip }} {% endcapture %}{% assign tocWorkspace = '' %}{{ deprecation_warnings }}{{ jekyll_toc }}

View file

@ -36,7 +36,7 @@ layout: default
<aside class="sidebar__right {% if page.toc_sticky %}sticky{% endif %}"> <aside class="sidebar__right {% if page.toc_sticky %}sticky{% endif %}">
<nav class="toc"> <nav class="toc">
<header><h4 class="nav__title"><i class="fas fa-{{ page.toc_icon | default: 'file-alt' }}"></i> {{ page.toc_label | default: site.data.ui-text[site.locale].toc_label | default: "On this page" }}</h4></header> <header><h4 class="nav__title"><i class="fas fa-{{ page.toc_icon | default: 'file-alt' }}"></i> {{ page.toc_label | default: site.data.ui-text[site.locale].toc_label | default: "On this page" }}</h4></header>
{% include toc.html sanitize=true html=content h_min=1 h_max=6 class="toc__menu" %} {% include toc.html sanitize=true html=content h_min=1 h_max=6 class="toc__menu" skip_no_ids=true %}
</nav> </nav>
</aside> </aside>
{% endif %} {% endif %}

View file

@ -20,6 +20,7 @@ toc: false
- Update Indonesian localized UI text strings. [#2731](https://github.com/mmistakes/minimal-mistakes/pull/2731)] - Update Indonesian localized UI text strings. [#2731](https://github.com/mmistakes/minimal-mistakes/pull/2731)]
- Update remote theme documentation. [#2734](https://github.com/mmistakes/minimal-mistakes/pull/2734) - Update remote theme documentation. [#2734](https://github.com/mmistakes/minimal-mistakes/pull/2734)
- Update allejo/jekyll-toc to v1.1.0, skip headings without an ID. [#2752](https://github.com/mmistakes/minimal-mistakes/pull/2752)
## [4.21.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.21.0) ## [4.21.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.21.0)
@ -28,7 +29,7 @@ toc: false
- Fix greedy navigation by improving reliability of remaining space for visible links. [#2664](https://github.com/mmistakes/minimal-mistakes/issues/2664) - Fix greedy navigation by improving reliability of remaining space for visible links. [#2664](https://github.com/mmistakes/minimal-mistakes/issues/2664)
- Collapse white-space in `figure` helper to fix issues when used in Markdown ordered and unordered lists. [#2697](https://github.com/mmistakes/minimal-mistakes/pull/2697) - Collapse white-space in `figure` helper to fix issues when used in Markdown ordered and unordered lists. [#2697](https://github.com/mmistakes/minimal-mistakes/pull/2697)
- Fix dead link to CI services in documentation. [#2635](https://github.com/mmistakes/minimal-mistakes/issues/2635) [#2692](https://github.com/mmistakes/minimal-mistakes/pull/2692) - Fix dead link to CI services in documentation. [#2635](https://github.com/mmistakes/minimal-mistakes/issues/2635) [#2692](https://github.com/mmistakes/minimal-mistakes/pull/2692)
- Fix a small type in documentation. [#2718](https://github.com/mmistakes/minimal-mistakes/pull/2718) - Fix a small typo in documentation. [#2718](https://github.com/mmistakes/minimal-mistakes/pull/2718)
### Enhancements ### Enhancements