135 lines
4.1 KiB
HTML
135 lines
4.1 KiB
HTML
<!--
|
|
Refactor the HTML structure.
|
|
-->
|
|
|
|
{% assign _content = include.content %}
|
|
|
|
<!--
|
|
In order to allow a wide table to scroll horizontally,
|
|
we suround the markdown table with `<div class="table-wrapper">` and `</div>`
|
|
-->
|
|
|
|
{% if _content contains '<table>' %}
|
|
{% assign _content = _content
|
|
| replace: '<table>', '<div class="table-wrapper"><table>'
|
|
| replace: '</table>', '</table></div>'
|
|
| replace: '</table></div></code>', '</table></code>'
|
|
%}
|
|
{% endif %}
|
|
|
|
<!--
|
|
Fixed kramdown code highlight rendering:
|
|
https://github.com/penibelst/jekyll-compress-html/issues/101
|
|
https://github.com/penibelst/jekyll-compress-html/issues/71#issuecomment-188144901
|
|
-->
|
|
|
|
{% if _content contains '<pre class="highlight">' %}
|
|
{% assign _content = _content
|
|
| replace: '<div class="highlight"><pre class="highlight"><code', '<div class="highlight"><code'
|
|
| replace: '</code></pre></div>', '</code></div>'
|
|
%}
|
|
{% endif %}
|
|
|
|
<!-- Add attribute 'hide-bullet' to the checkbox list -->
|
|
|
|
{% if _content contains '<li class="task-list-item"><' %}
|
|
{% assign _content = _content
|
|
| replace: '"task-list-item"><', '"task-list-item" hide-bullet><'
|
|
%}
|
|
{% endif %}
|
|
|
|
|
|
<!-- images -->
|
|
|
|
{% if _content contains '<img src="' %}
|
|
|
|
<!-- add CDN prefix if it exists -->
|
|
|
|
{% if site.img_cdn != '' %}
|
|
{% assign img_path_replacement = '<img src="' | append: site.img_cdn | append: '/' %}
|
|
{% else %}
|
|
{% assign img_path_replacement = '<img src="' | append: site.baseurl | append: '/' %}
|
|
{% endif %}
|
|
|
|
{% assign _content = _content | replace: '<img src="/', img_path_replacement %}
|
|
|
|
<!-- lazy-load images <https://github.com/ApoorvSaxena/lozad.js#usage> -->
|
|
|
|
{% assign _content = _content | replace: '<img src="', '<img data-proofer-ignore data-src="' %}
|
|
|
|
<!-- add image placehoder to prevent layout reflow -->
|
|
|
|
{% assign _img_content = nil %}
|
|
|
|
{% assign _images = _content | split: '<img ' %}
|
|
|
|
{% for _img in _images %}
|
|
{% if forloop.first %}
|
|
{% assign _img_content = _img %}
|
|
{% continue %}
|
|
{% endif %}
|
|
|
|
{% assign _width = nil %}
|
|
{% assign _height = nil %}
|
|
{% assign _attrs = _img | split: '>' | first | split: ' ' %}
|
|
|
|
{% for _attr in _attrs %}
|
|
{% capture _key %}{{ _attr | split: '=' | first }}{% endcapture %}
|
|
{% capture _value %}{{ _attr | split: '=' | last | replace: '"', '' }}{% endcapture %}
|
|
|
|
{% case _key %}
|
|
{% when 'width' %}
|
|
{% assign _width = _value %}
|
|
{% when 'height' %}
|
|
{% assign _height = _value %}
|
|
{% endcase %}
|
|
|
|
{% if _width and _height %}
|
|
{% capture _svg %}data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 {{_width}} {{_height}}'%3E%3C/svg%3E{% endcapture %}
|
|
{% assign _img_content = _img_content | append: '<img src="' | append: _svg | append: '" ' | append: _img %}
|
|
{% break %}
|
|
{% endif %}
|
|
|
|
{% endfor %}
|
|
|
|
{% unless _width and _height %}
|
|
{% assign _img_content = _img_content | append: '<img ' | append: _img %}
|
|
{% endunless %}
|
|
|
|
{% endfor %}
|
|
|
|
{% assign _content = _img_content %}
|
|
|
|
{% endif %}
|
|
|
|
<!-- Add header for code snippets -->
|
|
|
|
{% if _content contains '<div class="language-' %}
|
|
{% assign _code_splits = _content | split: '<div class="language-' %}
|
|
{% assign _new_content = nil %}
|
|
|
|
{% for _snippet in _code_splits %}
|
|
{% if forloop.first %}
|
|
{% assign _new_content = _snippet %}
|
|
{% else %}
|
|
{% assign _lang = _snippet | split: ' ' | first %}
|
|
{% capture _tag_head %}<div class="language-{% endcapture %}
|
|
{% assign _replacement = '-rouge"><div class="code-header" data-lang="'
|
|
| append: _lang
|
|
| append: '"><button><i class="fa-fw far fa-clipboard"></i></button></div><div class="highlight">'
|
|
%}
|
|
{% capture _tag_tail %}{{ _snippet | replace: '-rouge"><div class="highlight">', _replacement }}{% endcapture %}
|
|
{% assign _new_content = _new_content | append: _tag_head | append: _tag_tail %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
|
|
{% if _new_content %}
|
|
{% assign _content = _new_content %}
|
|
{% endif %}
|
|
|
|
{% endif %}
|
|
|
|
|
|
<!-- return -->
|
|
|
|
{{ _content }}
|