{{- /* Task lists rendering */ -}} {{- /* If Hugo supports the list rendering hook, refactor this snippet. */ -}} {{- $iconMap := dict " " "fa-regular fa-square" "x" "fa-regular fa-check-square" "/" "fa-regular fa-square" "-" "fa-solid fa-square-xmark" "<" "fa-regular fa-calendar-plus" ">" "fa-regular fa-calendar-minus" "!" "fa-regular fa-star" "!x" "fa-solid fa-star" "\\?" "fa-regular fa-circle-question" -}} {{- /* Custom Task lists */ -}} {{- $iconMap = site.Params.task_list | merge $iconMap -}} {{- /* Get the extended signs */ -}} {{- $extendedSigns := slice -}} {{- range $sign, $icon := $iconMap -}} {{- $extendedSigns = $extendedSigns | append $sign -}} {{- end -}} {{- /* The basic syntax is compatible with GitHub, Obsidian, and Typora. The basic format is as follows: - [ ] Unchecked - [x] Checked */ -}} {{- $icon := dict "Class" (index $iconMap " ") | partial "plugin/icon.html" -}} {{- $label := T (printf "taskList.%v" " ") -}} {{- $content := replaceRE `(?s)
  • ((\n

    )*)\s?([\s\S]*?)()` (printf `

  • $1%s$3$4` $icon $label) . -}} {{- $label := T (printf "taskList.%v" "x") -}} {{- $icon := dict "Class" (index $iconMap "x") | partial "plugin/icon.html" -}} {{- $content = replaceRE `(?s)
  • ((\n

    )*)\s?([\s\S]*?)()` (printf `

  • $1%s$3$4` $icon $label) $content -}} {{- /* The extended syntax is compatible with Obsidian. The extended format is as follows: - [-] Cancelled - [/] In Progress - [<] Scheduled - [>] Rescheduled - [!] Important - [!x] Important Checked - [?] Question */ -}} {{- range $extendedSigns -}} {{- $class := index $iconMap . | default "fa-solid fa-check-square" -}} {{- $icon := dict "Class" $class | partial "plugin/icon.html" -}} {{- $sign := htmlEscape . -}} {{- $originSign := replace . "\\" "" -}} {{- $label := (T (printf "taskList.%v" $originSign)) | default (T (printf "taskList.%v" " ")) -}} {{- $content = replaceRE (printf `(?s)
  • ((\n

    )*)\[%s\]\s?([\s\S]*?)()` $sign) (printf `

  • $1%s$3$4` $originSign $icon $label) $content -}} {{- end -}} {{- return $content -}}