{{- $content := .Content -}} {{- if $content -}} {{- $content = dict "Content" .Content "Ruby" .Ruby "Fraction" .Fraction "Fontawesome" .Fontawesome | partial "function/content.html" }} {{- /* Keep only the code content: remove highlight/chroma/lntable wrapper and line numbers */ -}} {{- $content = $content | replaceRE `(?s)]*class="highlight"[^>]*>.*?]*class="chroma"[^>]*>.*?]*class="lntable"[^>]*>.*?(?:]*>\s*)?]*>\s*]*class="lntd"[^>]*>.*?\s*]*class="lntd"[^>]*>(.*?)\s*\s*(?:\s*)?.*?.*?\s*` "$1" -}} {{- $codeBlocks := findRE `(?s)]*>.*?` $content -}} {{- if gt (len $codeBlocks) 0 -}} {{- range $i, $block := $codeBlocks -}} {{- $newBlock := $block -}} {{- $textMatches := findRE `>([^<]+)<` $block -}} {{- if gt (len $textMatches) 0 -}} {{- range $j, $m := $textMatches -}} {{- $inner := $m | replaceRE `^>([^<]+)<$` "$1" -}} {{- $newInner := replace $inner " " " " -}} {{- $newMatch := printf ">%s<" $newInner -}} {{- $newBlock = replace $newBlock $m $newMatch -}} {{- end -}} {{- end -}} {{- $content = replace $content $block $newBlock -}} {{- end -}} {{- end -}} {{- /* Keep only the first
...
inside a diagram-container */ -}} {{- $content = $content | replaceRE `(?s)]*class="diagram-container"[^>]*>.*?(]*class="mermaid"[^>]*>.*?).*?\s*(?:]*>.*?\s*)?` "$1" }} {{- $mermaidMatches := findRE `(?s)]*class="mermaid"[^>]*>.*?` $content -}} {{- if gt (len $mermaidMatches) 0 -}} {{- range $i, $m := $mermaidMatches -}} {{- $attrs := $m | replaceRE `(?s)]*)>.*?` "$1" -}} {{- $inner := $m | replaceRE `(?s)]*>(.*?)` "$1" -}} {{- $inner = replace $inner " " " " -}} {{- $newPre := printf "%s" $attrs $inner -}} {{- $content = replace $content $m $newPre -}} {{- end -}} {{- end -}} {{- /* Remove echarts diagram containers entirely */ -}} {{- $content = $content | replaceRE `(?s)]*class="diagram-container"[^>]*>.*?]*class="echarts"[^>]*>.*?\s*(?:]*>.*?\s*)?.*?` "" -}} {{- /* Replace json-viewer components with JSON code blocks */ -}} {{- $matches := findRE `(?s)]*\bvalue="[^"]*"[^>]*>(?:)?` $content -}} {{- if gt (len $matches) 0 -}} {{- range $i, $m := $matches -}} {{- /* extract the value="...": use replaceRE on the full match to get the captured group */ -}} {{- $rawVal := $m | replaceRE `(?s).*value="([^"]*)".*` "$1" -}} {{- /* decode HTML entities, strip outer quotes if present, unescape JSON-style escapes */ -}} {{- $jsonStr := $rawVal | htmlUnescape | replaceRE `^"(.*)"$` "$1" | replaceRE `\\\\` `\` | replaceRE `\\\"` `"` | replaceRE `\\n` "\n" | replaceRE `\\r` "" | replaceRE `\\t` "\t" -}} {{- /* try to unmarshal into object */ -}} {{- $obj := transform.Unmarshal $jsonStr | default dict -}} {{- /* serialize back to JSON */ -}} {{- $pretty := $obj | jsonify (dict "indent" "  ") -}} {{- /* build replacement pre/code block */ -}} {{- $replacement := printf "
%s
" $pretty -}} {{- /* replace the full original match with the rendered block */ -}} {{- $content = replace $content $m $replacement -}} {{- end -}} {{- end -}} {{- with .FeaturedImage }} {{- $content = add (printf "%q" . "featured image" "no-referrer") $content }} {{- end }} {{- $content = $content | transform.XMLEscape | safeHTML -}} {{- end }} {{- return $content -}}