Update for new Hugo versions
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
This commit is contained in:
6
layouts/_partials/bergamotinputmode.html
Normal file
6
layouts/_partials/bergamotinputmode.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<script>
|
||||
window.addEventListener('load', function() {
|
||||
window.Bergamot.inputModes['{{ .name }}'] = {{ .fn | safeJS }};
|
||||
});
|
||||
</script>
|
||||
|
||||
17
layouts/_partials/bergamotparseinputmodes.js
Normal file
17
layouts/_partials/bergamotparseinputmodes.js
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
{{ if . }}
|
||||
{{ range $name := split . ";" }}
|
||||
{{ if eq $name "query" }}
|
||||
"Query": "query",
|
||||
{{ else }}
|
||||
{{ $pieces := split $name ":" }}
|
||||
{{ $name := index $pieces 0 }}
|
||||
{{ $modestring := index $pieces 1 }}
|
||||
"{{ $name }}": { "custom": "{{ $modestring }}" },
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
"Languge Term": { "custom": "Bergamot Object Language" },
|
||||
"Query": "query",
|
||||
{{ end }}
|
||||
}
|
||||
11
layouts/_partials/bergamotpreset.html
Normal file
11
layouts/_partials/bergamotpreset.html
Normal file
@@ -0,0 +1,11 @@
|
||||
<script>
|
||||
window.addEventListener('load', function() {
|
||||
window.Bergamot.presets['{{ .name }}'] = {
|
||||
rules: {{ .file }},
|
||||
inputModes: {{ partial "bergamotparseinputmodes.js" .modes | safeJS }},
|
||||
inputPrompt: '{{ .prompt }}',
|
||||
query: '{{ .query }}',
|
||||
renderPreset: '{{ default "default" .renderPreset }}'
|
||||
};
|
||||
});
|
||||
</script>
|
||||
6
layouts/_partials/bergamotrenderpreset.html
Normal file
6
layouts/_partials/bergamotrenderpreset.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<script>
|
||||
window.addEventListener('load', function() {
|
||||
window.Bergamot.renderPresets['{{ .name }}'] =
|
||||
{{ .file }};
|
||||
});
|
||||
</script>
|
||||
2
layouts/_partials/defercss.html
Normal file
2
layouts/_partials/defercss.html
Normal file
@@ -0,0 +1,2 @@
|
||||
<link rel="preload" href="{{ .url }}" as="style" onload="this.onload=null;this.rel='stylesheet'" {{ .extra | safeHTMLAttr }}>
|
||||
<noscript><link rel="stylesheet" href="{{ .url }}"></noscript>
|
||||
27
layouts/_partials/geturl.html
Normal file
27
layouts/_partials/geturl.html
Normal file
@@ -0,0 +1,27 @@
|
||||
{{- $siteSourceUrl := site.Params.siteSourceUrl -}}
|
||||
{{- $submoduleLinks := site.Data.submodules -}}
|
||||
{{- $hostData := site.Data.hosts -}}
|
||||
{{- $scratch := .scratch -}}
|
||||
{{- $lines := .lines -}}
|
||||
{{- $scratch.Set "bestLength" -1 -}}
|
||||
{{- $scratch.Set "bestUrl" (printf "%s/code/%s" $siteSourceUrl .path) -}}
|
||||
{{- $scratch.Set "bestPath" "" -}}
|
||||
{{- $filePath := .path -}}
|
||||
{{- range $path, $url := $submoduleLinks -}}
|
||||
{{- $bestLength := $scratch.Get "bestLength" -}}
|
||||
{{- if and (le $bestLength (len $path)) (hasPrefix $filePath $path) -}}
|
||||
{{- $scratch.Set "bestLength" (len $path) -}}
|
||||
{{- $scratch.Set "bestPath" $path -}}
|
||||
{{- $scratch.Set "bestUrl" (printf "%s%s" $url (strings.TrimPrefix $path $filePath)) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- if .lines -}}
|
||||
{{- /* If the user provided a line range, see if we can tack it on to the end of the link. */ -}}
|
||||
{{- range $host, $data := $hostData -}}
|
||||
{{- if hasPrefix ($scratch.Get "bestUrl") $host -}}
|
||||
{{- with $data.linesSuffix -}}
|
||||
{{- $scratch.Add "bestUrl" (printf . (index $lines 0) (index $lines 1)) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
3
layouts/_partials/group.html
Normal file
3
layouts/_partials/group.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<div class="highlight-group" {{ with .attrs }}{{ . | safeHTMLAttr }}{{ end }}>
|
||||
<div class="highlight-label">{{ i18n "from" }} <a href="{{ .url }}">{{ path.Base .path }}</a>{{ .comment }}</div>{{ .content }}
|
||||
</div>
|
||||
104
layouts/_partials/head.html
Normal file
104
layouts/_partials/head.html
Normal file
@@ -0,0 +1,104 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="theme-color" content="#1dc868">
|
||||
{{ if .Description }}
|
||||
<meta name="description" content="{{ .Description }}">
|
||||
{{ end }}
|
||||
{{ with index (.GetTerms "series") 0 }}
|
||||
<meta name="blog-series" content="{{ .Data.Term }}">
|
||||
{{ end }}
|
||||
|
||||
{{ range .Params.discussionRooms }}
|
||||
<meta name="matrix-highlight-comments" content="{{ . }}">
|
||||
{{ end }}
|
||||
|
||||
<!-- Fonts -->
|
||||
{{ if not (.Site.Params.noCss) }}
|
||||
{{ $fonts := resources.Get "scss/fonts.scss" | css.Sass | resources.Minify }}
|
||||
<link rel="stylesheet" href="{{ $fonts.Permalink }}" media="screen">
|
||||
{{ end }}
|
||||
|
||||
<!-- External CSS (normalize and KaTeX -->
|
||||
{{ if not (.Site.Params.noCss) }}
|
||||
{{ partial "defercss.html" (dict "url" .Site.Params.normalizeCssUrl "extra" "") }}
|
||||
{{ partial "defercss.html" (dict "url" .Site.Params.katexCssUrl "extra" "") }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Links to other formats (RSS, TOML) -->
|
||||
{{ range .Site.Home.AlternativeOutputFormats -}}
|
||||
<link rel="{{ .Rel }}" type="{{ .MediaType.Type | html }}" href="{{ .Permalink | safeURL }}">
|
||||
{{ end -}}
|
||||
|
||||
<!-- In-house CSS -->
|
||||
{{ $style := resources.Get "scss/style.scss" | css.Sass | resources.Minify }}
|
||||
{{ $sidenotes := resources.Get "scss/sidenotes.scss" | css.Sass | resources.Minify }}
|
||||
{{ $code := resources.Get "scss/code.scss" | css.Sass | resources.Minify }}
|
||||
{{ $icon := resources.Get "img/favicon.png" }}
|
||||
<style>.feather { display: inline !important; width: 10px; height: 10px; }</style>
|
||||
<style>img { max-width: 70%; }</style>
|
||||
{{ if not (.Site.Params.noCss) }}
|
||||
<link rel="stylesheet" href="{{ $style.Permalink }}">
|
||||
{{ partial "defercss.html" (dict "url" $sidenotes.Permalink "extra" "") }}
|
||||
{{ partial "defercss.html" (dict "url" $code.Permalink "extra" "") }}
|
||||
{{ end }}
|
||||
<link rel="icon" type="image/png" href="{{ $icon.Permalink }}">
|
||||
|
||||
{{ if .Params.custom_js }}
|
||||
{{ range $customJs := .Params.custom_js }}
|
||||
<script src="{{ page.Resources.Get $customJs }}"></script>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ partial "opengraph.html" . }}
|
||||
{{ partial "twitter_cards.html" . }}
|
||||
|
||||
<link rel="canonical" href="{{ .Permalink }}">
|
||||
|
||||
{{ if hugo.IsServer }}
|
||||
<!-- KaTeX auto-rendering for when we don't have a post-processing step. -->
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.0/dist/katex.min.js" integrity="sha384-X/XCfMm41VSsqRNQgDerQczD69XqmjOOOwYQvr/uuC+j4OPoNhVgjdGFwhvN02Ja" crossorigin="anonymous"></script>
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.0/dist/contrib/auto-render.min.js" integrity="sha384-+XBljXPPiv+OzfbB3cVmLHf4hdUFHlWNZN5spNQ7rmHTXpd7WvJum6fIACpNNfIR" crossorigin="anonymous"
|
||||
onload="renderMathInElement(document.body);"></script>
|
||||
{{ end }}
|
||||
|
||||
{{ if .Params.bergamot }}
|
||||
<!-- Ensure later scripts keep the KaTeX CSS even if the page has no LaTeX !-->
|
||||
<meta name="needs-latex">
|
||||
<!-- Code to support the Bergamot JS widget -->
|
||||
<script defer src="{{ .Site.Params.katexJsUrl }}" crossorigin="anonymous"></script>
|
||||
{{ $katexComponentJs := resources.Get "js/katex-component.js" | resources.Minify }}
|
||||
<script defer src="{{ $katexComponentJs.Permalink }}"></script>
|
||||
<script defer src="{{ .Site.Params.bergamotJsUrl }}"></script>
|
||||
<script defer src="{{ .Site.Params.bergamotObjectLanguageJsUrl }}"></script>
|
||||
{{ $bergamotHelpers := resources.Get "js/bergamot-helpers.js" | resources.Minify }}
|
||||
<script defer src="{{ $bergamotHelpers.Permalink }}"></script>
|
||||
{{ $bergamotStyle := resources.Get "scss/bergamot.scss" | css.Sass | resources.Minify }}
|
||||
{{ partial "defercss.html" (dict "url" $bergamotStyle.Permalink "extra" "") }}
|
||||
{{ if .Params.bergamot.render_presets }}
|
||||
{{ range $name, $rulefile := .Params.bergamot.render_presets }}
|
||||
{{ $file := default (resources.Get $rulefile) (page.Resources.Get $rulefile) }}
|
||||
{{ partial "bergamotrenderpreset.html" (dict "name" $name "file" $file.Content) }}
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ partial "bergamotrenderpreset.html" (dict "name" "default" "file" (resources.Get "bergamot/rendering/minimal.bergamot").Content) }}
|
||||
{{ end }}
|
||||
{{ if .Params.bergamot.presets }}
|
||||
{{ range $name, $preset := .Params.bergamot.presets }}
|
||||
{{ $file := default (resources.Get $preset.file) (page.Resources.Get $preset.file) }}
|
||||
{{ $info := dict "name" $name "prompt" $preset.prompt "query" $preset.query "file" $file.Content "renderPreset" $preset.render_preset "inputModes" $preset.input_modes }}
|
||||
{{ partial "bergamotpreset.html" $info }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ if .Params.bergamot.input_modes }}
|
||||
{{ range $mode := .Params.bergamot.input_modes }}
|
||||
{{ partial "bergamotinputmode.html" (dict "name" $mode.name "fn" $mode.fn) }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ with .Site.Params.plausibleAnalyticsDomain }}
|
||||
<!-- Plausible analytics, because log parsing is not working all that well. -->
|
||||
<script defer data-domain="{{ . }}" src="https://plausible.io/js/script.js"></script>
|
||||
{{ end }}
|
||||
|
||||
<title>{{ .Title }}</title>
|
||||
20
layouts/_partials/header.html
Normal file
20
layouts/_partials/header.html
Normal file
@@ -0,0 +1,20 @@
|
||||
<div class="container">
|
||||
<h1>{{ .Site.Title }}</h1>
|
||||
</div>
|
||||
<nav>
|
||||
<div class="container">
|
||||
<a href="{{ .Site.Home.Permalink }}">{{ i18n "home" }}</a>
|
||||
<a href="{{ relref . "about" }}">{{ i18n "about" }}</a>
|
||||
{{ with .Site.Params.githubUsername }}
|
||||
<a href="https://github.com/{{ . }}">GitHub</a>
|
||||
{{ end }}
|
||||
{{ if .Site.Params.resumeStaticFile }}
|
||||
<a href="{{ absLangURL .Site.Params.resumeStaticFile }}">{{ i18n "resume" }}</a>
|
||||
{{ end }}
|
||||
<a href="{{ site.Taxonomies.tags.Page.Permalink }}">{{ i18n "tags" }}</a>
|
||||
<a href="{{ site.Taxonomies.series.Page.Permalink }}">{{ i18n "series" }}</a>
|
||||
<a href="{{ relref . "favorites" }}">{{ i18n "favorites" }}</a>
|
||||
<a href="{{ relref . "search" }}">{{ i18n "search" }}</a>
|
||||
<a href="{{ relref . "blog" }}">{{ i18n "allPosts" }}</a>
|
||||
</div>
|
||||
</nav>
|
||||
11
layouts/_partials/highlightgroup.html
Normal file
11
layouts/_partials/highlightgroup.html
Normal file
@@ -0,0 +1,11 @@
|
||||
{{- $highlightGroupAttrs := (printf "data-base-path=\"%s\" data-file-path=\"%v\"" .basePath .path) -}}
|
||||
{{- if (or .firstLine .lastLine) -}}
|
||||
{{- $highlightGroupAttrs = add $highlightGroupAttrs (printf " data-first-line=\"%v\" data-last-line=\"%v\"" .firstLine .lastLine) -}}
|
||||
{{- end -}}
|
||||
{{- if eq (lower .language) "agda" -}}
|
||||
{{- $highlightGroupAttrs = add $highlightGroupAttrs " data-agda-block" -}}
|
||||
{{- end -}}
|
||||
{{- with .offset -}}
|
||||
{{- $highlightGroupAttrs = add $highlightGroupAttrs (printf " data-source-offset=\"%v\"" .) -}}
|
||||
{{- end -}}
|
||||
{{ partial "group.html" (dict "url" .url "path" .path "comment" .comment "content" (highlight .code .language .opts) "attrs" $highlightGroupAttrs) }}
|
||||
4
layouts/_partials/icon.html
Normal file
4
layouts/_partials/icon.html
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg class="feather" style="display: none;">
|
||||
<use xlink:href="/feather-sprite.svg#{{ . }}"/>
|
||||
</svg>
|
||||
{{- /* This comment is to remove trailing whitespace */ -}}
|
||||
|
After Width: | Height: | Size: 164 B |
9
layouts/_partials/linerangestr.html
Normal file
9
layouts/_partials/linerangestr.html
Normal file
@@ -0,0 +1,9 @@
|
||||
{{ if eq .from .to }}
|
||||
{{ .scratch.Set "comment" (printf ", line %d" .from) }}
|
||||
{{ else }}
|
||||
{{ if eq .from 0 }}
|
||||
{{ .scratch.Set "comment" (printf ", around line %d" .to) }}
|
||||
{{ else }}
|
||||
{{ .scratch.Set "comment" (printf ", lines %d through %d" .from .to) }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
8
layouts/_partials/nameinseries.html
Normal file
8
layouts/_partials/nameinseries.html
Normal file
@@ -0,0 +1,8 @@
|
||||
{{- $term := index (.page.GetTerms "series") 0 -}}
|
||||
{{- $divider := $term.Params.divider -}}
|
||||
{{- if (and $divider (strings.Contains .page.Title $divider)) -}}
|
||||
{{- $rest := after 1 (split .page.Title $divider) -}}
|
||||
{{- .scratch.Set "name" (delimit $rest $divider) -}}
|
||||
{{- else -}}
|
||||
{{- .scratch.Set "name" .page.Title -}}
|
||||
{{- end -}}
|
||||
29
layouts/_partials/post.html
Normal file
29
layouts/_partials/post.html
Normal file
@@ -0,0 +1,29 @@
|
||||
<li>
|
||||
{{- $scratch := newScratch -}}
|
||||
{{- if .seriesName -}}
|
||||
{{- partial "nameinseries" (dict "page" .page "scratch" $scratch) -}}
|
||||
{{- else -}}
|
||||
{{- $scratch.Set "name" (.page.Title) -}}
|
||||
{{- end -}}
|
||||
<a href="{{ .page.Permalink }}" class="post-title">{{ if .page.Params.favorite }}{{ partial "icon.html" "star" }}{{ end }} {{ $scratch.Get "name" }}</a>
|
||||
{{ if (not (eq .page.WordCount 0)) }}
|
||||
<p class="post-wordcount">{{ i18n "nWords" .page.WordCount }}, {{ i18n "nMinutesToRead" .page.ReadingTime }}.</p>
|
||||
{{ end }}
|
||||
{{ if .page.Params.status }}
|
||||
<p class="post-status">
|
||||
{{ partial "seriesstatus.html" .page.Params.status }}
|
||||
</p>
|
||||
{{ end }}
|
||||
<p class="post-preview">{{ partial "summary" .page }}</p>
|
||||
{{- if .linkSeries -}}
|
||||
{{- $term := index (.page.GetTerms "series") 0 -}}
|
||||
{{- with $term -}}
|
||||
{{- if (not ($term.Param "donotunique")) -}}
|
||||
<div class="series-link">
|
||||
{{- partial "icon.html" "corner-down-right" -}}
|
||||
<p>{{- i18n "latestInSeries" }} <a href="{{ $term.Permalink }}">{{ $term.Title }}</a></p>
|
||||
</div>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
</li>
|
||||
12
layouts/_partials/serieslink.html
Normal file
12
layouts/_partials/serieslink.html
Normal file
@@ -0,0 +1,12 @@
|
||||
<div class="{{ .direction }} wrapper">
|
||||
<a href="{{ .page.RelPermalink }}">
|
||||
{{ if eq .direction "previous" }}{{ partial "icon.html" "chevrons-left" }}{{ end }}
|
||||
<div class="title-subtitle">
|
||||
{{ title .direction }} in Series
|
||||
{{ $scratch := newScratch -}}
|
||||
{{- partial "nameinseries.html" (dict "page" .page "scratch" $scratch) -}}
|
||||
<div class="title">{{ $scratch.Get "name" }}</div>
|
||||
</div>
|
||||
{{ if eq .direction "next" }}{{ partial "icon.html" "chevrons-right" }}{{ end }}
|
||||
</a>
|
||||
</div>
|
||||
10
layouts/_partials/serieslinkplaceholder.html
Normal file
10
layouts/_partials/serieslinkplaceholder.html
Normal file
@@ -0,0 +1,10 @@
|
||||
<div class="{{ .direction }} wrapper">
|
||||
<div class="ongoing-placeholder">
|
||||
{{ if eq .direction "previous" }}{{ partial "icon.html" "chevrons-left" }}{{ end }}
|
||||
<div class="title-subtitle">
|
||||
{{ title .direction }} in Series
|
||||
<div class="title">Coming soon!</div>
|
||||
</div>
|
||||
{{ if eq .direction "next" }}{{ partial "icon.html" "chevrons-right" }}{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
17
layouts/_partials/seriesnav.html
Normal file
17
layouts/_partials/seriesnav.html
Normal file
@@ -0,0 +1,17 @@
|
||||
{{- $page := . -}}
|
||||
{{- $term := index (.GetTerms "series") 0 -}}
|
||||
{{- with $term -}}
|
||||
{{- /* No idea why the 'Reverse' is needed? */ -}}
|
||||
{{- $pages := (site.Taxonomies.series.Get .Data.Term).Pages.ByDate.Reverse -}}
|
||||
<nav class="series-navigation">
|
||||
{{- with $pages.Prev $page -}}
|
||||
{{- partial "serieslink.html" (dict "direction" "previous" "page" .) -}}
|
||||
{{- end -}}
|
||||
{{- $nextPage := $pages.Next $page -}}
|
||||
{{- if $nextPage -}}
|
||||
{{- partial "serieslink.html" (dict "direction" "next" "page" $nextPage) -}}
|
||||
{{- else if eq $term.Params.status "ongoing" -}}
|
||||
{{- partial "serieslinkplaceholder.html" (dict "direction" "next") -}}
|
||||
{{- end -}}
|
||||
</nav>
|
||||
{{- end -}}
|
||||
4
layouts/_partials/seriesstatus.html
Normal file
4
layouts/_partials/seriesstatus.html
Normal file
@@ -0,0 +1,4 @@
|
||||
<span class="series-status {{ . }}">
|
||||
{{ i18n "seriesStatus" }}
|
||||
<span class="series-status-keyword">{{ i18n (printf "%sSeries" .) }}</span>
|
||||
</span>
|
||||
5
layouts/_partials/summary.html
Normal file
5
layouts/_partials/summary.html
Normal file
@@ -0,0 +1,5 @@
|
||||
{{- if .Params.summary -}}
|
||||
{{ .Params.summary | markdownify | plainify }}
|
||||
{{- else -}}
|
||||
{{ .Summary | plainify | truncate 180 }}
|
||||
{{- end -}}
|
||||
14
layouts/_partials/uniquebyseries.html
Normal file
14
layouts/_partials/uniquebyseries.html
Normal file
@@ -0,0 +1,14 @@
|
||||
{{- $scratch := .scratch -}}
|
||||
{{- $scratch.Set "pages" slice -}}
|
||||
{{- $tmpScratch := newScratch -}}
|
||||
{{- range $post := (where (where site.Pages.ByDate.Reverse "Section" "blog") ".Kind" "!=" "section") -}}
|
||||
{{- $term := index ($post.GetTerms "series") 0 -}}
|
||||
{{- if (and $term (not ($term.Param "donotunique"))) -}}
|
||||
{{- if not ($tmpScratch.Get $term.Permalink) -}}
|
||||
{{- $tmpScratch.Set $term.Permalink true -}}
|
||||
{{- $scratch.Add "pages" $post -}}
|
||||
{{- end -}}
|
||||
{{- else -}}
|
||||
{{- $scratch.Add "pages" $post -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
3
layouts/_partials/warning.html
Normal file
3
layouts/_partials/warning.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<div class="warning">
|
||||
<em>{{ i18n "warning" }}</em> {{ . }}
|
||||
</div>
|
||||
Reference in New Issue
Block a user