Files
hugo-theme-chirpy/layouts/partials/refractor-content.html
2025-04-27 10:45:34 +08:00

63 lines
2.7 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{{ $content := .Content }}
<!-- Handle tables -->
{{ if findRE `<table` $content }}
{{ $content = replace $content `<table` `<div class="table-wrapper"><table` }}
{{ $content = replace $content `</table>` `</table></div>` }}
{{ $content = replace $content `<code><div class="table-wrapper">` `<code>` }}
{{ $content = replace $content `</table></div></code>` `</table></code>` }}
{{ end }}
<!-- Change checkbox icons -->
{{ if findRE `<input.*type="checkbox"` $content }}
<!-- 首先标记包含复选框的li元素 -->
{{ $content = replaceRE `<li>(\s*)<input` `<li class="task-list-item">$1<input` $content }}
{{ $content = replaceRE `<li class="([^"]*)"(\s*)<input` `<li class="task-list-item $1"$2<input` $content }}
<!-- 然后为包含task-list-item类的li的父ul添加task-list类 -->
{{ $content = replaceRE `<ul>(\s*)<li class="task-list-item` `<ul class="task-list">$1<li class="task-list-item` $content }}
{{ $content = replaceRE `<ul class="([^"]*)"(\s*)<li class="task-list-item` `<ul class="task-list $1"$2<li class="task-list-item` $content }}
<!-- 替换所有已选中的复选框格式 -->
{{ $content = replaceRE `<input.*?checked.*?type="checkbox".*?>` `<i class="fas fa-check-circle fa-fw checked"></i>` $content }}
{{ $content = replaceRE `<input.*?type="checkbox".*?checked.*?>` `<i class="fas fa-check-circle fa-fw checked"></i>` $content }}
<!-- 替换所有未选中的复选框格式排除已经被替换的checked复选框 -->
{{ $content = replaceRE `<input.*?type="checkbox".*?>` `<i class="far fa-circle fa-fw"></i>` $content }}
{{ end }}
<!-- Create heading anchors -->
{{ $headingLevels := slice "2" "3" "4" "5" }}
{{ $headingContent := $content }}
{{ range $level := $headingLevels }}
{{ $markStart := printf `<h%s id="` $level }}
{{ $markEnd := printf `</h%s>` $level }}
{{ if findRE $markStart $headingContent }}
{{ $newContent := "" }}
{{ $headingSnippets := split $headingContent $markStart }}
{{ range $index, $snippet := $headingSnippets }}
{{ if eq $index 0 }}
{{ $newContent = $snippet }}
{{ continue }}
{{ end }}
{{ $id := index (split $snippet `"`) 0 }}
{{ $anchor := printf `<a href="#%s" class="anchor text-muted"><i class="fas fa-hashtag"></i></a>` $id }}
{{ $left := index (split $snippet $markEnd) 0 }}
{{ $right := substr $snippet (len $left) }}
{{ $left = replace $left `">` `"><span class="me-2">` | printf `%s</span>` }}
{{ $newContent = printf `%s%s%s%s%s` $newContent $markStart $left $anchor $right }}
{{ end }}
{{ $headingContent = $newContent }}
{{ end }}
{{ end }}
{{ $content = $headingContent | safeHTML }}
{{ $content }}