mirror of
				https://github.com/Mabbs/mabbs.github.io
				synced 2025-10-31 11:56:38 +00:00 
			
		
		
		
	Update 2 files
- /_posts/2025-03-22-hifi.md - /_includes/toc.html
This commit is contained in:
		| @@ -1,6 +1,30 @@ | ||||
| {% capture tocWorkspace %} | ||||
|     {% comment %} | ||||
|         Version 1.0.7 | ||||
|         Copyright (c) 2017 Vladimir "allejo" Jimenez | ||||
|  | ||||
|         Permission is hereby granted, free of charge, to any person | ||||
|         obtaining a copy of this software and associated documentation | ||||
|         files (the "Software"), to deal in the Software without | ||||
|         restriction, including without limitation the rights to use, | ||||
|         copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|         copies of the Software, and to permit persons to whom the | ||||
|         Software is furnished to do so, subject to the following | ||||
|         conditions: | ||||
|  | ||||
|         The above copyright notice and this permission notice shall be | ||||
|         included in all copies or substantial portions of the Software. | ||||
|  | ||||
|         THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||
|         EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||||
|         OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||
|         NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||||
|         HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||||
|         WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||||
|         FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||||
|         OTHER DEALINGS IN THE SOFTWARE. | ||||
|     {% endcomment %} | ||||
|     {% comment %} | ||||
|         Version 1.2.1 | ||||
|           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 | ||||
| @@ -12,84 +36,154 @@ | ||||
|             * html         (string) - the HTML of compiled markdown generated by kramdown in Jekyll | ||||
|  | ||||
|         Optional Parameters: | ||||
|             * sanitize     (bool)   : false  - when set to true, the headers will be stripped of any HTML in the TOC | ||||
|             * class        (string) :   ''   - a CSS class assigned to the TOC | ||||
|             * id           (string) :   ''   - an ID to assigned to the TOC | ||||
|             * h_min        (int)    :   1    - the minimum TOC header level to use; any header lower than this value will be ignored | ||||
|             * h_max        (int)    :   6    - the maximum TOC header level to use; any header greater than this value will be ignored | ||||
|             * 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 | ||||
|             * baseurl      (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 | ||||
|             * sanitize      (bool)   : false  - when set to true, the headers will be stripped of any HTML in the TOC | ||||
|             * class         (string) :   ''   - a CSS class assigned to the TOC | ||||
|             * id            (string) :   ''   - an ID to assigned to the TOC | ||||
|             * h_min         (int)    :   1    - the minimum TOC header level to use; any header lower than this value will be ignored | ||||
|             * h_max         (int)    :   6    - the maximum TOC header level to use; any header greater than this value will be ignored | ||||
|             * 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 | ||||
|             * 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 | ||||
|             * 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 | ||||
|             * skip_no_ids   (bool)   : false  - skip headers that do not have an `id` attribute | ||||
|             * flat_toc      (bool)   : false  - when set to true, the TOC will be a single level list | ||||
|  | ||||
|         Output: | ||||
|             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 | ||||
|     {% 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 flatToc = include.flat_toc | 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 maxHeader = include.h_max | default: 6 %} | ||||
|     {% assign nodes = include.html | split: '<h' %} | ||||
|     {% assign firstHeader = true %} | ||||
|     {% assign nodes = include.html | strip | split: '<h' %} | ||||
|  | ||||
|     {% 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 %} | ||||
|         {% if node == "" %} | ||||
|             {% continue %} | ||||
|         {% 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 %} | ||||
|         {% endif %} | ||||
|  | ||||
|         {% if firstHeader %} | ||||
|             {% assign firstHeader = false %} | ||||
|             {% assign minHeader = headerLevel %} | ||||
|         {% endif %} | ||||
|  | ||||
|         {% assign indentAmount = headerLevel | minus: minHeader | add: 1 %} | ||||
|         {% assign _workspace = node | split: '</h' %} | ||||
|  | ||||
|         {% assign _idWorkspace = _workspace[0] | split: 'id="' %} | ||||
|         {% assign _idWorkspace = _idWorkspace[1] | split: '"' %} | ||||
|         {% assign html_id = _idWorkspace[0] %} | ||||
|         {% assign htmlID = _idWorkspace[0] %} | ||||
|  | ||||
|         {% assign _classWorkspace = _workspace[0] | split: 'class="' %} | ||||
|         {% 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 %} | ||||
|         {% endif %} | ||||
|  | ||||
|         {% if firstHeader %} | ||||
|             {% assign minHeader = currLevel %} | ||||
|         {% endif %} | ||||
|  | ||||
|         {% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %} | ||||
|         {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} | ||||
|  | ||||
|         {% assign space = '' %} | ||||
|         {% for i in (1..indentAmount) %} | ||||
|             {% assign space = space | prepend: '    ' %} | ||||
|         {% endfor %} | ||||
|         {% if include.item_class and include.item_class != blank %} | ||||
|             {% capture listItemClass %} class="{{ include.item_class | replace: '%level%', currLevel | split: '.' | join: ' ' }}"{% endcapture %} | ||||
|         {% endif %} | ||||
|  | ||||
|         {% unless include.item_class == blank %} | ||||
|             {% capture listItemClass %}{:.{{ include.item_class | replace: '%level%', headerLevel }}}{% endcapture %} | ||||
|         {% endunless %} | ||||
|         {% if include.submenu_class and include.submenu_class != blank %} | ||||
|             {% assign subMenuLevel = currLevel | minus: 1 %} | ||||
|             {% capture subMenuClass %} class="{{ include.submenu_class | replace: '%level%', subMenuLevel | split: '.' | join: ' ' }}"{% endcapture %} | ||||
|         {% endif %} | ||||
|  | ||||
|         {% capture my_toc %}{{ my_toc }} | ||||
| {{ space }}{{ listModifier }} {{ listItemClass }} [{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}]({% if include.baseurl %}{{ include.baseurl }}{% endif %}#{{ html_id }}){% if include.anchor_class %}{:.{{ include.anchor_class }}}{% endif %}{% endcapture %} | ||||
|         {% capture anchorBody %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% 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 %} | ||||
|             {% continue %} | ||||
|         {% else %} | ||||
|             {% capture listItem %}{{ anchorBody }}{% endcapture %} | ||||
|         {% endif %} | ||||
|  | ||||
|         {% if currLevel > lastLevel and flatToc == false %} | ||||
|             {% capture jekyll_toc %}{{ jekyll_toc }}<{{ listModifier }}{{ subMenuClass }}>{% endcapture %} | ||||
|         {% elsif currLevel < lastLevel and flatToc == false %} | ||||
|             {% assign repeatCount = lastLevel | minus: currLevel %} | ||||
|  | ||||
|             {% for i in (1..repeatCount) %} | ||||
|                 {% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %} | ||||
|             {% endfor %} | ||||
|  | ||||
|             {% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %} | ||||
|         {% else %} | ||||
|             {% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %} | ||||
|         {% endif %} | ||||
|  | ||||
|         {% capture jekyll_toc %}{{ jekyll_toc }}<li{{ listItemClass }}>{{ listItem }}{% endcapture %} | ||||
|  | ||||
|         {% assign lastLevel = currLevel %} | ||||
|         {% assign firstHeader = false %} | ||||
|     {% endfor %} | ||||
|  | ||||
|     {% if include.class %} | ||||
|         {% capture my_toc %}{:.{{ include.class }}} | ||||
| {{ my_toc | lstrip }}{% endcapture %} | ||||
|     {% if flatToc == true %} | ||||
|         {% assign repeatCount = 1 %} | ||||
|     {% else %} | ||||
|         {% assign repeatCount = minHeader | minus: 1 %} | ||||
|         {% assign repeatCount = lastLevel | minus: repeatCount %} | ||||
|     {% endif %} | ||||
|  | ||||
|     {% if include.id %} | ||||
|         {% capture my_toc %}{: #{{ include.id }}} | ||||
| {{ my_toc | lstrip }}{% endcapture %} | ||||
|     {% 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 %} | ||||
| {% endcapture %}{% assign tocWorkspace = '' %}{{ my_toc | markdownify | strip }} | ||||
| {% endcapture %}{% assign tocWorkspace = '' %}{{ deprecation_warnings }}{{ jekyll_toc -}} | ||||
		Reference in New Issue
	
	Block a user
	 mayx
					mayx