Compare commits

..

1 Commits

Author SHA1 Message Date
868be30118 Adjust summaries to account for Hugo breaking changes
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-03-02 18:53:48 -08:00
78 changed files with 421 additions and 951 deletions

View File

@@ -1,174 +0,0 @@
@import "variables.scss";
@import "mixins.scss";
.bergamot-exercise {
counter-increment: bergamot-exercise;
.bergamot-root {
border: none;
padding: 0;
margin-top: 1em;
}
.bergamot-exercise-label {
.bergamot-exercise-number::after {
content: "Exercise " counter(bergamot-exercise);
font-weight: bold;
text-decoration: underline;
}
}
.bergamot-button {
@include bordered-block;
padding: 0.25em;
padding-left: 1em;
padding-right: 1em;
background-color: inherit;
display: inline-flex;
align-items: center;
justify-content: center;
transition: 0.25s;
font-family: $font-body;
@include var(color, text-color);
&.bergamot-hidden {
display: none;
}
.feather {
margin-right: 0.5em;
}
}
.bergamot-play {
.feather { color: $primary-color; }
&:hover, &:focus {
.feather { color: lighten($primary-color, 20%); }
}
}
.bergamot-reset {
.feather { color: #0099CC; }
&:hover, &:focus {
.feather { color: lighten(#0099CC, 20%); }
}
svg {
fill: none;
}
}
.bergamot-close {
.feather { color: tomato; }
&:hover, &:focus {
.feather { color: lighten(tomato, 20%); }
}
}
.bergamot-button-group {
margin-top: 1em;
}
}
.bergamot-root {
@include bordered-block;
padding: 1em;
.bergamot-section-heading {
margin-bottom: 0.5em;
font-family: $font-body;
font-style: normal;
font-weight: bold;
font-size: 1.25em;
}
.bergamot-section {
margin-bottom: 1em;
}
textarea {
display: block;
width: 100%;
height: 10em;
resize: none;
}
input[type="text"] {
width: 100%;
@include textual-input;
}
.bergamot-rule-list {
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
}
.bergamot-rule-list katex-expression {
margin-left: .5em;
margin-right: .5em;
flex-grow: 1;
flex-basis: 0;
}
.bergamot-rule-section {
.bergamot-rule-section-name {
text-align: center;
margin: 0.25em;
font-weight: bold;
}
}
.bergamot-proof-tree {
overflow: auto;
}
.bergamot-error {
@include bordered-block;
padding: 0.5rem;
border-color: tomato;
background-color: rgba(tomato, 0.25);
margin-top: 1rem;
}
.bergamot-selector {
button {
@include var(background-color, background-color);
@include var(color, text-color);
@include bordered-block;
padding: 0.5rem;
font-family: $font-body;
border-style: dotted;
&.active {
border-color: $primary-color;
border-style: solid;
font-weight: bold;
}
&:not(:first-child) {
border-bottom-left-radius: 0;
border-top-left-radius: 0;
}
&:not(:last-child) {
border-bottom-right-radius: 0;
border-top-right-radius: 0;
border-right-width: 0;
}
}
button.active + button {
border-left-color: $primary-color;
border-left-style: solid;
}
margin-bottom: 1rem;
}
.bergamot-no-proofs {
text-align: center;
}
}

View File

@@ -43,23 +43,3 @@
@include font-raleway(400); @include font-raleway(400);
@include font-raleway(700); @include font-raleway(700);
@include font-stixgeneral(); @include font-stixgeneral();
/* Generated from chatgpt-adjust-fallback.py */
@font-face {
font-family: "Raleway Fallback";
src: local("Arial");
size-adjust: 100.09%;
ascent-override: 94.00%;
descent-override: 23.40%;
line-gap-override: 0.00%;
}
@font-face {
font-family: "Lora Fallback";
src: local("Times New Roman");
size-adjust: 111.79%;
ascent-override: 100.60%;
descent-override: 27.40%;
line-gap-override: 0.00%;
}

View File

@@ -6,7 +6,7 @@
} }
@mixin below-container-width { @mixin below-container-width {
@media screen and (max-width: $container-width-threshold) { @media screen and (max-width: $container-width-threshold){
@content; @content;
} }
} }

View File

@@ -59,7 +59,7 @@ p {
} }
@include below-two-margins { @include below-two-margins {
left: -($margin-width + $margin-inner-offset + $margin-outer-offset) / 2; left: -($margin-width + $margin-inner-offset + $margin-outer-offset)/2;
} }
@include below-one-margin { @include below-one-margin {
@@ -67,20 +67,12 @@ p {
} }
} }
.tag-list { .button, input[type="submit"] {
display: flex;
flex-wrap: wrap;
gap: 0.5rem 0.25rem;
justify-content: center;
}
.tag {
@include var(color, text-color); @include var(color, text-color);
padding: 0.5rem; padding: 0.5rem;
border: 1px solid $primary-color; border: 1px solid $primary-color;
transition: color 0.25s, background-color 0.25s; transition: color 0.25s, background-color 0.25s;
text-align: left; text-align: left;
display: block;
&:focus { &:focus {
outline: none; outline: none;
@@ -338,7 +330,8 @@ figure {
That's because firefox reader mode doesn't play nice with them, and That's because firefox reader mode doesn't play nice with them, and
it seems to ignore all styles in <head>. Then, the inline style it seems to ignore all styles in <head>. Then, the inline style
in <head> uses !important to restore the display of icons, but provides in <head> uses !important to restore the display of icons, but provides
limited styling. Here, we finally apply the full extent of the feather styles. limited styling. Here, we finally apply the full extent of the feather
styles.
*/ */
.feather { .feather {
width: 1rem; width: 1rem;
@@ -363,7 +356,7 @@ figure {
.dialog { .dialog {
.message { .message {
max-width: 0.8 * $container-width; max-width: 0.8*$container-width;
margin-top: 0.5rem; margin-top: 0.5rem;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
@@ -409,6 +402,7 @@ figure {
} }
} }
a, .ongoing-placeholder { a, .ongoing-placeholder {
@include bordered-block; @include bordered-block;
padding: 0.5em 1em 0.5em 1em; padding: 0.5em 1em 0.5em 1em;

View File

@@ -9,8 +9,8 @@ $background-color-dark: #1b1d1f;
$standard-border-width: .075rem; $standard-border-width: .075rem;
$standard-border: $standard-border-width solid $border-color; $standard-border: $standard-border-width solid $border-color;
$font-heading: "Lora", "Lora Fallback", serif; $font-heading: "Lora", serif;
$font-body: "Raleway", "Raleway Fallback", sans-serif; $font-body: "Raleway", serif;
$font-code: "Inconsolata", monospace, "STIXGeneral"; $font-code: "Inconsolata", monospace, "STIXGeneral";
$warning-background-color: #ffee99; $warning-background-color: #ffee99;
@@ -23,7 +23,7 @@ $target-background-color-dark: #55511c;
$code-color: #f0f0f0; $code-color: #f0f0f0;
$code-color-dark: lighten($background-color-dark, 10%); $code-color-dark: lighten($background-color-dark, 10%);
$code-token-color: darken($primary-color, 25%); $code-token-color: black;
$code-token-color-dark: $primary-color; $code-token-color-dark: $primary-color;
$code-highlight-color: #fffd99; $code-highlight-color: #fffd99;
$code-highlight-color-dark: #555538; $code-highlight-color-dark: #555538;

View File

@@ -1,47 +0,0 @@
@import "variables.scss";
body {
background-color: #1c1e26;
--text-color: white;
font-family: $font-code;
}
h1, h2, h3, h4, h5, h6 {
text-align: left;
font-family: $font-code;
}
h1::after {
content: "(writing)";
font-size: 1rem;
margin-left: 0.5em;
position: relative;
bottom: -0.5em;
color: $primary-color;
}
nav .container {
justify-content: flex-start;
a {
padding-left: 0;
margin-right: 1em;
}
}
.header-divider {
visibility: hidden;
}
hr {
height: auto;
border: none;
&::after {
content: "* * *";
color: $primary-color;
font-size: 2rem;
display: block;
text-align: center;
}
}

View File

@@ -1,115 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="297mm"
height="210mm"
viewBox="0 0 297 210"
version="1.1"
id="svg1"
inkscape:version="1.4.2 (ebf0e940, 2025-05-08)"
sodipodi:docname="banner.svg"
inkscape:export-filename="banner-source.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="1.7079029"
inkscape:cx="501.78498"
inkscape:cy="465.77591"
inkscape:window-width="1728"
inkscape:window-height="996"
inkscape:window-x="0"
inkscape:window-y="38"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:export-bgcolor="#ffffffff" />
<defs
id="defs1">
<rect
x="49.549049"
y="153.15161"
width="826.85009"
height="237.77854"
id="rect8" />
<rect
x="49.549049"
y="111.10999"
width="678.67182"
height="524.01873"
id="rect7" />
<rect
x="244.20348"
y="346.16049"
width="287.95187"
height="438.00638"
id="rect4" />
<rect
x="244.20348"
y="346.16049"
width="414.25137"
height="418.77991"
id="rect4-6" />
<rect
x="244.20348"
y="346.16049"
width="414.25137"
height="418.77991"
id="rect4-6-1" />
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<circle
style="fill:#36e281;fill-opacity:1;stroke:#36e281;stroke-width:4.33532;stroke-dasharray:none;stroke-opacity:1"
id="path3"
cy="91.614052"
cx="148.5"
r="36.96402" />
<path
id="path3-3-6"
style="fill:#ffffff;stroke:#36e281;stroke-width:4.33532;stroke-dasharray:none;stroke-opacity:1;stroke-linecap:round"
d="m 148.49869,128.57807 c -13.20597,0 -25.40879,-7.0453 -32.01177,-18.48201 -6.60299,-11.436707 -6.60299,-25.527312 0,-36.964017 6.60298,-11.436705 18.8058,-18.482007 32.01177,-18.482007"
sodipodi:nodetypes="cssc" />
<text
xml:space="preserve"
transform="matrix(-0.15711337,0,0,0.19685436,189.77821,-5.4885608)"
id="text4-3"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:253.455px;font-family:Helvetica;-inkscape-font-specification:'Helvetica Bold';text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect4-6);display:inline;fill:#36e281;fill-opacity:1;stroke:#36e281;stroke-width:1.37953;stroke-opacity:1"><tspan
x="244.20312"
y="584.4805"
id="tspan5">D</tspan></text>
<text
xml:space="preserve"
transform="matrix(0.15711337,0,0,0.19685436,107.21917,-5.5129228)"
id="text4-3-2"
style="font-size:253.455px;text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect4-6-1);display:inline;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.37953;stroke-opacity:1"><tspan
x="244.20312"
y="584.4805"
id="tspan7"><tspan
style="font-weight:bold;font-family:Helvetica;-inkscape-font-specification:'Helvetica Bold'"
id="tspan6">F</tspan></tspan></text>
<text
xml:space="preserve"
transform="matrix(0.19664896,0,0,0.19664896,73.930049,102.60811)"
id="text8"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:106.667px;font-family:Lora;-inkscape-font-specification:'Lora Bold';text-align:start;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect8);display:inline;fill:#1a1a1a;fill-opacity:1;stroke:none;stroke-width:22.046"><tspan
x="49.548828"
y="250.31931"
id="tspan8">Daniel's Blog</tspan></text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -1,90 +0,0 @@
"""
Generate @font-face settings to help make the fallback font look similar
to the non-fallback font.
Genererated by ChatGTP 5.2-instant. Not human-modified.
"""
from fontTools.ttLib import TTFont
USE_TYPO_METRICS = 1 << 7
def get_metrics(path):
font = TTFont(path)
head = font["head"]
os2 = font["OS/2"]
hhea = font["hhea"]
use_typo = bool(os2.fsSelection & USE_TYPO_METRICS)
if use_typo:
asc = os2.sTypoAscender
desc = os2.sTypoDescender
gap = os2.sTypoLineGap
source = "OS/2.sTypo*"
else:
asc = hhea.ascent
desc = -hhea.descent
gap = hhea.lineGap
source = "hhea.*"
# x-height ALWAYS comes from OS/2
if not hasattr(os2, "sxHeight") or os2.sxHeight <= 0:
raise ValueError(f"{path} has no usable sxHeight")
x_height = os2.sxHeight
print("Source", path, source)
return {
"unitsPerEm": head.unitsPerEm,
"ascender": asc,
"descender": desc,
"lineGap": gap,
"xHeight": x_height,
}
def compute_overrides(target, fallback):
# size-adjust: match x-height
size_adjust = (
(target["xHeight"] / target["unitsPerEm"]) /
(fallback["xHeight"] / fallback["unitsPerEm"])
)
# overrides: force target vertical metrics
ascent_override = target["ascender"] / target["unitsPerEm"]
descent_override = abs(target["descender"]) / target["unitsPerEm"]
line_gap_override = target["lineGap"] / target["unitsPerEm"]
return {
"size_adjust": size_adjust * 100,
"ascent_override": ascent_override * 100,
"descent_override": descent_override * 100,
"line_gap_override": line_gap_override * 100,
}
def emit_css(family_name, local_name, values):
return f"""
@font-face {{
font-family: "{family_name}";
src: local("{local_name}");
size-adjust: {values['size_adjust']:.2f}%;
ascent-override: {values['ascent_override']:.2f}%;
descent-override: {values['descent_override']:.2f}%;
line-gap-override: {values['line_gap_override']:.2f}%;
}}
""".strip()
# ---- Example usage ----
target = get_metrics("static/fonts/gen/Lora-Regular.woff2")
fallback = get_metrics("/System/Library/Fonts/Supplemental/Times New Roman.ttf")
values = compute_overrides(target, fallback)
print(emit_css(
family_name="Lora Fallback",
local_name="Times New Roman",
values=values,
))

View File

@@ -1,8 +1,7 @@
[params] [params]
katexCssUrl = "https://static.danilafe.com/katex/katex.min.css" katexCssUrl = "//static.danilafe.com/katex/katex.min.css"
katexJsUrl = "https://static.danilafe.com/katex/katex.min.js" katexJsUrl = "//static.danilafe.com/katex/katex.min.js"
normalizeCssUrl = "https://static.danilafe.com/normalize/normalize.css" normalizeCssUrl = "//static.danilafe.com/normalize/normalize.css"
visNetworkJsUrl = "https://static.danilafe.com/vis-network/vis-network.min.js" visNetworkJsUrl = "//static.danilafe.com/vis-network/vis-network.min.js"
bergamotJsUrl = "https://static.danilafe.com/bergamot/bergamot.js" bergamotJsUrl = "//static.danilafe.com/bergamot/bergamot.js"
bergamotObjectLanguageJsUrl = "https://static.danilafe.com/bergamot/objectlang.js" bergamotObjectLanguageJsUrl = "//static.danilafe.com/bergamot/objectlang.js"
images = ["banner.png"]

View File

@@ -77,30 +77,3 @@
[ongoingSeries] [ongoingSeries]
other = "Ongoing" other = "Ongoing"
[nextInSeries]
other = "Next in Series"
[previousInSeries]
other = "Previous in Series"
[comingSoon]
other = "Coming soon!"
[startBergamot]
other = "Start Bergamot"
[closeBergamot]
other = "Close Bergamot"
[lineX]
other = ", line {{ . }}"
[aroundLineX]
other = ", around line {{ . }}"
[linesXThroughY]
other = ", lines {{ .from }} through {{ .to }}"
[entireFile]
other = ", entire file"

View File

@@ -1,4 +1,4 @@
{{- .Page.Store.SetInMap "definedSections" (printf "#%s" .Anchor) true -}} {{- .Page.Scratch.SetInMap "definedSections" (printf "#%s" .Anchor) true -}}
<a href="#{{ .Anchor }}"> <a href="#{{ .Anchor }}">
<h{{ .Level }} id="{{ .Anchor }}"> <h{{ .Level }} id="{{ .Anchor }}">
{{- .Text | safeHTML -}} {{- .Text | safeHTML -}}

View File

@@ -1,25 +1,24 @@
{{- $class := "" -}} {{- $scratch := newScratch -}}
{{- $icon := "" -}}
{{- $absoluteDest := absLangURL .Destination -}} {{- $absoluteDest := absLangURL .Destination -}}
{{- $siteRootUrl := absLangURL "" -}} {{- $siteRootUrl := absLangURL "" -}}
{{- $isExternal := not (hasPrefix $absoluteDest $siteRootUrl) -}} {{- $isExternal := not (hasPrefix $absoluteDest $siteRootUrl) -}}
{{- $isSamePage := hasPrefix .Destination "#" -}} {{- $isSamePage := hasPrefix .Destination "#" -}}
{{- if $isSamePage -}} {{- if $isSamePage -}}
{{- $class = "same-page-link" -}} {{- $scratch.Set "class" "same-page-link" -}}
{{- if index (.Page.Store.Get "definedSections") .Destination -}} {{- if index (.Page.Scratch.Get "definedSections") .Destination -}}
{{- $icon = "arrow-up" -}} {{- $scratch.Set "icon" "arrow-up" -}}
{{- else -}} {{- else -}}
{{- /* Do not render "down" links because don't know how to distinguish unseen titles from paragraph links. */ -}} {{- /* Do not render "down" links because don't know how to distinguish unseen titles from paragraph links. */ -}}
{{- /* $icon = "arrow-down" */ -}} {{- /* $scratch.Set "icon" "arrow-down" */ -}}
{{- end -}} {{- end -}}
{{- else if $isExternal -}} {{- else if $isExternal -}}
{{- $class = "external-link" -}} {{- $scratch.Set "class" "external-link" -}}
{{- $icon = "external-link" -}} {{- $scratch.Set "icon" "external-link" -}}
{{- end -}} {{- end -}}
<a href="{{ .Destination | safeURL }}" <a href="{{ .Destination | safeURL }}"
{{- with .Title }} title="{{ . }}"{{ end -}} {{- with .Title }} title="{{ . }}"{{ end -}}
{{- with $class -}} {{- with $scratch.Get "class" -}}
class="{{ . }}" class="{{ . }}"
{{- end -}} {{- end -}}
{{- if (and site.Params.externalLinksInNewTab $isExternal) -}} {{- if (and site.Params.externalLinksInNewTab $isExternal) -}}
@@ -27,6 +26,6 @@
{{- end -}} {{- end -}}
> >
{{- with .Text | safeHTML }}{{ . }}{{ end -}} {{- with .Text | safeHTML }}{{ . }}{{ end -}}
{{- with $icon -}}{{- partial "icon.html" . -}}{{- end -}} {{- with $scratch.Get "icon" -}}{{- partial "icon.html" . -}}{{- end -}}
</a> </a>
{{- /* chomp trailing newline */ -}} {{- /* chomp trailing newline */ -}}

View File

@@ -1,8 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="{{ .Site.Language.Lang }}"> <html lang="{{ .Site.Language.Lang }}">
<head>
{{- partial "head.html" . -}} {{- partial "head.html" . -}}
</head>
<body> <body>
{{- partial "header.html" . -}} {{- partial "header.html" . -}}
<div class="container"><hr class="header-divider"></div> <div class="container"><hr class="header-divider"></div>

View File

@@ -1,9 +0,0 @@
{{ if and (eq .Type "alert") (eq .AlertType "todo") -}}
<div style="background-color: tomato; color: white; padding: 10px;">
<em>TODO: </em>{{- .Text | plainify -}}
</div>
{{- else -}}
<blockquote {{- with .Attributes.id }} id="{{ . }}"{{ end }}>
{{ .Text -}}
</blockquote>
{{- end }}

View File

@@ -1,2 +0,0 @@
<link rel="preload" href="{{ .url }}" as="style" onload="this.onload=null;this.rel='stylesheet'"{{ with .integrity }} integrity="{{ . }}"{{ end }}{{ with .extra }} {{ . | safeHTMLAttr }}{{ end }}>
<noscript><link rel="stylesheet" href="{{ .url }}"{{ with .integrity }} integrity="{{ . }}"{{ end }}></noscript>

View File

@@ -1,26 +0,0 @@
{{- $siteSourceUrl := site.Params.siteSourceUrl -}}
{{- $submoduleLinks := hugo.Data.submodules -}}
{{- $hostData := hugo.Data.hosts -}}
{{- $lines := .lines -}}
{{- $bestLength := -1 -}}
{{- $bestUrl := printf "%s/code/%s" $siteSourceUrl .path -}}
{{- $bestPath := "" -}}
{{- $filePath := .path -}}
{{- range $path, $url := $submoduleLinks -}}
{{- if and (le $bestLength (len $path)) (hasPrefix $filePath $path) -}}
{{- $bestLength = len $path -}}
{{- $bestPath = $path -}}
{{- $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 $bestUrl $host -}}
{{- with $data.linesSuffix -}}
{{- $bestUrl = add $bestUrl (printf . (index $lines 0) (index $lines 1)) -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- return (dict "url" $bestUrl "basePath" $bestPath) -}}

View File

@@ -1,11 +0,0 @@
{{- $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) }}

View File

@@ -1,9 +0,0 @@
{{- $comment := "" -}}
{{- if eq .from .to -}}
{{- $comment = i18n "lineX" .to -}}
{{- else if eq .from 0 -}}
{{- $comment = i18n "aroundLineX" .to -}}
{{- else -}}
{{- $comment = i18n "linesXThroughY" . -}}
{{- end -}}
{{- return $comment -}}

View File

@@ -1,5 +0,0 @@
{{- if .Params.summary -}}
{{ .Params.summary | markdownify | plainify }}
{{- else -}}
{{ .Summary | plainify | truncate 180 }}
{{- end -}}

View File

@@ -1,11 +0,0 @@
{{- $url := partial "geturl.html" (dict "path" (.Get 1)) -}}
{{- $groupconfig := dict
"url" $url.url
"basePath" $url.basePath
"path" (.Get 1)
"comment" (i18n "entireFile")
"code" (readFile (printf "code/%s" (.Get 1)))
"language" (.Get 0)
"opts" "linenos=table"
-}}
{{- partial "highlightgroup.html" $groupconfig -}}

View File

@@ -1,59 +0,0 @@
{{- $source := (readFile (printf "code/%s" (.Get 1))) -}}
{{- $allLines := split $source "\n" -}}
{{- $scratch := newScratch -}}
{{- $remLines := $allLines -}}
{{- if not (eq (int (.Get 2)) 1) -}}
{{- $remLines = after (sub (int (.Get 2)) 1) $allLines -}}
{{- end -}}
{{- $lines := first (add (sub (int (.Get 3)) (int (.Get 2))) 1) $remLines -}}
{{- $opts := "" -}}
{{- if (.Get 4) -}}
{{- $opts = printf ",%s" (.Get 4) -}}
{{- end -}}
{{- if (.Get 5) -}}
{{- $scratch.Set "hidden" (.Get 5) -}}
{{- end -}}
{{- $prefixLength := "" -}}
{{- $joinedLines := "" -}}
{{- if or (.Page.Params.left_align_code) (.Get 6) -}}
{{- $prefixLength = -1 -}}
{{- range $line := $lines -}}
{{- $leading := sub (len $line) (len (strings.TrimLeft " " $line)) -}}
{{- if and (ne $line "") (or (eq $prefixLength -1) (le $leading $prefixLength)) -}}
{{- $prefixLength = $leading -}}
{{- end -}}
{{- end -}}
{{- range $line := $lines -}}
{{- $joinedLines = add $joinedLines (substr $line $prefixLength) -}}
{{- $joinedLines = add $joinedLines "\n" -}}
{{- end -}}
{{- else -}}
{{- $joinedLines = delimit $lines "\n" -}}
{{- end -}}
{{- $url := partial "geturl.html" (dict "path" (.Get 1) "lines" (slice (.Get 2) (.Get 3))) -}}
{{- $comment := partial "linerangestr.html" (dict "from" (.Get 2) "to" (.Get 3)) -}}
{{- with ($scratch.Get "hidden") -}}
<details><summary>{{- . | markdownify -}}</summary>
{{- end -}}
{{- $groupconfig := dict
"url" $url.url
"basePath" $url.basePath
"path" (.Get 1)
"comment" $comment
"code" $joinedLines
"firstLine" (int (.Get 2))
"lastLine" (int (.Get 3))
"language" (.Get 0)
"offset" $prefixLength
"opts" (printf "linenos=table,linenostart=%d%s" (.Get 2) $opts)
-}}
{{- partial "highlightgroup.html" $groupconfig -}}
{{- with ($scratch.Get "hidden") -}}
</details>
{{- end -}}

View File

@@ -1,2 +0,0 @@
{{- $url := partial "geturl.html" (dict "path" (.Get 0)) -}}
{{- $url.url -}}

View File

@@ -1,9 +0,0 @@
{{- $url := partial "geturl.html" (dict "path" (.Get 0)) -}}
{{- $groupconfig := dict
"url" $url.url
"basePath" $url.basePath
"path" (.Get 0)
"comment" (i18n "entireFile")
"content" (safeHTML (printf "<pre><code>%s</code></pre>" (htmlEscape (readFile (printf "code/%s" (.Get 0))))))
-}}
{{- partial "group.html" $groupconfig -}}

View File

@@ -1,9 +1,9 @@
{{ define "main" }} {{ define "main" }}
<h2>{{ .Title }}</h2> <h2>{{ .Title }}</h2>
<div class="post-subscript"> <div class="post-subscript">
<p class="tag-list"> <p>
{{- range (.GetTerms "tags") -}} {{- range (.GetTerms "tags") -}}
<a class="tag" href="{{ .Permalink }}">{{ .Title }}</a> <a class="button" href="{{ .Permalink }}">{{ .Title }}</a>
{{ end -}} {{ end -}}
</p> </p>
<p>{{ i18n "postedOn" (.Date.Format "January 2, 2006") }}.</p> <p>{{ i18n "postedOn" (.Date.Format "January 2, 2006") }}.</p>

View File

@@ -2,9 +2,9 @@
{{ .Content }} {{ .Content }}
{{ i18n "recentPosts" }}: {{ i18n "recentPosts" }}:
{{ $pages := partial "uniquebyseries.html" . }} {{ partial "uniquebyseries.html" (dict "scratch" .Scratch) }}
<ul class="post-list"> <ul class="post-list">
{{ range first 10 $pages }} {{ range first 10 (.Scratch.Get "pages") }}
{{ partial "post.html" (dict "page" . "linkSeries" true) }} {{ partial "post.html" (dict "page" . "linkSeries" true) }}
{{ end }} {{ end }}
</ul> </ul>

View File

@@ -11,7 +11,7 @@
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ else }} {{ else }}
"Language Term": { "custom": "Bergamot Object Language" }, "Languge Term": { "custom": "Bergamot Object Language" },
"Query": "query", "Query": "query",
{{ end }} {{ end }}
} }

View 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>

View 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 -}}

View File

@@ -1,3 +1,4 @@
<head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#1dc868"> <meta name="theme-color" content="#1dc868">
@@ -14,8 +15,8 @@
<!-- Fonts --> <!-- Fonts -->
{{ if not (.Site.Params.noCss) }} {{ if not (.Site.Params.noCss) }}
{{ $fonts := resources.Get "scss/fonts.scss" | css.Sass | resources.Minify | resources.Fingerprint }} {{ $fonts := resources.Get "scss/fonts.scss" | css.Sass | resources.Minify }}
<link rel="stylesheet" href="{{ $fonts.Permalink }}" integrity="{{ $fonts.Data.Integrity }}" media="screen"> <link rel="stylesheet" href="{{ $fonts.Permalink }}" media="screen">
{{ end }} {{ end }}
<!-- External CSS (normalize and KaTeX --> <!-- External CSS (normalize and KaTeX -->
@@ -30,32 +31,24 @@
{{ end -}} {{ end -}}
<!-- In-house CSS --> <!-- In-house CSS -->
{{ $style := resources.Get "scss/style.scss" | css.Sass | resources.Minify | resources.Fingerprint }} {{ $style := resources.Get "scss/style.scss" | css.Sass | resources.Minify }}
{{ $sidenotes := resources.Get "scss/sidenotes.scss" | css.Sass | resources.Minify | resources.Fingerprint }} {{ $sidenotes := resources.Get "scss/sidenotes.scss" | css.Sass | resources.Minify }}
{{ $code := resources.Get "scss/code.scss" | css.Sass | resources.Minify | resources.Fingerprint }} {{ $code := resources.Get "scss/code.scss" | css.Sass | resources.Minify }}
{{ $icon := resources.Get "img/favicon.png" | resources.Fingerprint }} {{ $icon := resources.Get "img/favicon.png" }}
<style>.feather { display: inline !important; width: 10px; height: 10px; }</style> <style>.feather { display: inline !important; width: 10px; height: 10px; }</style>
<style>img { max-width: 70%; }</style> <style>img { max-width: 70%; }</style>
{{ if not (.Site.Params.noCss) }} {{ if not (.Site.Params.noCss) }}
<link rel="stylesheet" href="{{ $style.Permalink }}" integrity="{{ $style.Data.Integrity }}"> <link rel="stylesheet" href="{{ $style.Permalink }}">
{{ partial "defercss.html" (dict "url" $sidenotes.Permalink "integrity" $sidenotes.Data.Integrity "extra" "") }} {{ partial "defercss.html" (dict "url" $sidenotes.Permalink "extra" "") }}
{{ partial "defercss.html" (dict "url" $code.Permalink "integrity" $code.Data.Integrity "extra" "") }} {{ partial "defercss.html" (dict "url" $code.Permalink "extra" "") }}
{{ end }} {{ end }}
<link rel="icon" type="image/png" href="{{ $icon.Permalink }}" integrity="{{ $icon.Data.Integrity }}"> <link rel="icon" type="image/png" href="{{ $icon.Permalink }}">
{{ if .Params.custom_js }} {{ if .Params.custom_js }}
{{ range $customJs := .Params.custom_js }} {{ range $customJs := .Params.custom_js }}
{{ with page.Resources.Get $customJs }} <script src="{{ page.Resources.Get $customJs }}"></script>
{{ $customJsResource := . | resources.Fingerprint }}
<script src="{{ $customJsResource.Permalink }}" integrity="{{ $customJsResource.Data.Integrity }}"></script>
{{ end }} {{ end }}
{{ end }} {{ end }}
{{ end }}
{{ partial "opengraph.html" . }}
{{ partial "twitter_cards.html" . }}
<link rel="canonical" href="{{ .Permalink }}">
{{ if hugo.IsServer }} {{ if hugo.IsServer }}
<!-- KaTeX auto-rendering for when we don't have a post-processing step. --> <!-- KaTeX auto-rendering for when we don't have a post-processing step. -->
@@ -65,18 +58,16 @@
{{ end }} {{ end }}
{{ if .Params.bergamot }} {{ 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 --> <!-- Code to support the Bergamot JS widget -->
<script defer src="{{ .Site.Params.katexJsUrl }}" crossorigin="anonymous"></script> <script defer src="{{ .Site.Params.katexJsUrl }}" crossorigin="anonymous"></script>
{{ $katexComponentJs := resources.Get "js/katex-component.js" | resources.Minify | resources.Fingerprint }} {{ $katexComponentJs := resources.Get "js/katex-component.js" | resources.Minify }}
<script defer src="{{ $katexComponentJs.Permalink }}" integrity="{{ $katexComponentJs.Data.Integrity }}"></script> <script defer src="{{ $katexComponentJs.Permalink }}"></script>
<script defer src="{{ .Site.Params.bergamotJsUrl }}"></script> <script defer src="{{ .Site.Params.bergamotJsUrl }}"></script>
<script defer src="{{ .Site.Params.bergamotObjectLanguageJsUrl }}"></script> <script defer src="{{ .Site.Params.bergamotObjectLanguageJsUrl }}"></script>
{{ $bergamotHelpers := resources.Get "js/bergamot-helpers.js" | resources.Minify | resources.Fingerprint }} {{ $bergamotHelpers := resources.Get "js/bergamot-helpers.js" | resources.Minify }}
<script defer src="{{ $bergamotHelpers.Permalink }}" integrity="{{ $bergamotHelpers.Data.Integrity }}"></script> <script defer src="{{ $bergamotHelpers.Permalink }}"></script>
{{ $bergamotStyle := resources.Get "scss/bergamot.scss" | css.Sass | resources.Minify | resources.Fingerprint }} {{ $bergamotStyle := resources.Get "scss/bergamot.scss" | css.Sass | resources.Minify }}
{{ partial "defercss.html" (dict "url" $bergamotStyle.Permalink "integrity" $bergamotStyle.Data.Integrity "extra" "") }} {{ partial "defercss.html" (dict "url" $bergamotStyle.Permalink "extra" "") }}
{{ if .Params.bergamot.render_presets }} {{ if .Params.bergamot.render_presets }}
{{ range $name, $rulefile := .Params.bergamot.render_presets }} {{ range $name, $rulefile := .Params.bergamot.render_presets }}
{{ $file := default (resources.Get $rulefile) (page.Resources.Get $rulefile) }} {{ $file := default (resources.Get $rulefile) (page.Resources.Get $rulefile) }}
@@ -105,3 +96,4 @@
{{ end }} {{ end }}
<title>{{ .Title }}</title> <title>{{ .Title }}</title>
</head>

View File

@@ -0,0 +1,12 @@
{{- $scratch := newScratch -}}
{{- $scratch.Set "highlightGroupAttrs" (printf "data-base-path=\"%s\" data-file-path=\"%v\"" .basePath .path) -}}
{{- if (or .firstLine .lastLine) -}}
{{- $scratch.Add "highlightGroupAttrs" (printf " data-first-line=\"%v\" data-last-line=\"%v\"" .firstLine .lastLine) -}}
{{- end -}}
{{- if eq (lower .language) "agda" -}}
{{- $scratch.Add "highlightGroupAttrs" " data-agda-block" -}}
{{- end -}}
{{- with .offset -}}
{{- $scratch.Add "highlightGroupAttrs" (printf " data-source-offset=\"%v\"" .) -}}
{{- end -}}
{{ partial "group.html" (dict "url" .url "path" .path "comment" .comment "content" (highlight .code .language .opts) "attrs" ($scratch.Get "highlightGroupAttrs")) }}

View File

Before

Width:  |  Height:  |  Size: 164 B

After

Width:  |  Height:  |  Size: 164 B

View 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 }}

View File

@@ -1,8 +1,8 @@
{{- $term := index (.page.GetTerms "series") 0 -}} {{- $term := index (.page.GetTerms "series") 0 -}}
{{- $divider := $term.Params.divider -}} {{- $divider := $term.Params.divider -}}
{{- $name := .page.Title -}}
{{- if (and $divider (strings.Contains .page.Title $divider)) -}} {{- if (and $divider (strings.Contains .page.Title $divider)) -}}
{{- $rest := after 1 (split .page.Title $divider) -}} {{- $rest := after 1 (split .page.Title $divider) -}}
{{- $name = delimit $rest $divider -}} {{- .scratch.Set "name" (delimit $rest $divider) -}}
{{- else -}}
{{- .scratch.Set "name" .page.Title -}}
{{- end -}} {{- end -}}
{{- return $name -}}

View File

@@ -1,9 +1,11 @@
<li> <li>
{{- $name := .page.Title -}} {{- $scratch := newScratch -}}
{{- if .seriesName -}} {{- if .seriesName -}}
{{- $name = partial "nameinseries" (dict "page" .page) -}} {{- partial "nameinseries" (dict "page" .page "scratch" $scratch) -}}
{{- else -}}
{{- $scratch.Set "name" (.page.Title) -}}
{{- end -}} {{- end -}}
<a href="{{ .page.Permalink }}" class="post-title">{{ if .page.Params.favorite }}{{ partial "icon.html" "star" }}{{ end }} {{ $name }}</a> <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)) }} {{ if (not (eq .page.WordCount 0)) }}
<p class="post-wordcount">{{ i18n "nWords" .page.WordCount }}, {{ i18n "nMinutesToRead" .page.ReadingTime }}.</p> <p class="post-wordcount">{{ i18n "nWords" .page.WordCount }}, {{ i18n "nMinutesToRead" .page.ReadingTime }}.</p>
{{ end }} {{ end }}
@@ -16,12 +18,10 @@
{{- if .linkSeries -}} {{- if .linkSeries -}}
{{- $term := index (.page.GetTerms "series") 0 -}} {{- $term := index (.page.GetTerms "series") 0 -}}
{{- with $term -}} {{- with $term -}}
{{- if (not ($term.Param "donotunique")) -}}
<div class="series-link"> <div class="series-link">
{{- partial "icon.html" "corner-down-right" -}} {{- partial "icon.html" "corner-down-right" -}}
<p>{{- i18n "latestInSeries" }} <a href="{{ $term.Permalink }}">{{ $term.Title }}</a></p> <p>{{- i18n "latestInSeries" }} <a href="{{ $term.Permalink }}">{{ $term.Title }}</a></p>
</div> </div>
{{- end -}} {{- end -}}
{{- end -}}
{{- end }} {{- end }}
</li> </li>

View File

@@ -2,8 +2,10 @@
<a href="{{ .page.RelPermalink }}"> <a href="{{ .page.RelPermalink }}">
{{ if eq .direction "previous" }}{{ partial "icon.html" "chevrons-left" }}{{ end }} {{ if eq .direction "previous" }}{{ partial "icon.html" "chevrons-left" }}{{ end }}
<div class="title-subtitle"> <div class="title-subtitle">
{{ i18n (printf "%sInSeries" .direction) }} {{ title .direction }} in Series
<div class="title">{{ partial "nameinseries.html" (dict "page" .page) }}</div> {{ $scratch := newScratch -}}
{{- partial "nameinseries.html" (dict "page" .page "scratch" $scratch) -}}
<div class="title">{{ $scratch.Get "name" }}</div>
</div> </div>
{{ if eq .direction "next" }}{{ partial "icon.html" "chevrons-right" }}{{ end }} {{ if eq .direction "next" }}{{ partial "icon.html" "chevrons-right" }}{{ end }}
</a> </a>

View File

@@ -2,8 +2,8 @@
<div class="ongoing-placeholder"> <div class="ongoing-placeholder">
{{ if eq .direction "previous" }}{{ partial "icon.html" "chevrons-left" }}{{ end }} {{ if eq .direction "previous" }}{{ partial "icon.html" "chevrons-left" }}{{ end }}
<div class="title-subtitle"> <div class="title-subtitle">
{{ i18n (printf "%sInSeries" .direction) }} {{ title .direction }} in Series
<div class="title">{{ i18n "comingSoon" }}</div> <div class="title">Coming soon!</div>
</div> </div>
{{ if eq .direction "next" }}{{ partial "icon.html" "chevrons-right" }}{{ end }} {{ if eq .direction "next" }}{{ partial "icon.html" "chevrons-right" }}{{ end }}
</div> </div>

View File

@@ -1,14 +1,14 @@
{{- $pages := slice -}} {{- $scratch := .scratch -}}
{{- $scratch.Set "pages" slice -}}
{{- $tmpScratch := newScratch -}} {{- $tmpScratch := newScratch -}}
{{- range $post := (where (where site.Pages.ByDate.Reverse "Section" "blog") ".Kind" "!=" "section") -}} {{- range $post := (where (where site.Pages.ByDate.Reverse "Section" "blog") ".Kind" "!=" "section") -}}
{{- $term := index ($post.GetTerms "series") 0 -}} {{- $term := index ($post.GetTerms "series") 0 -}}
{{- if (and $term (not ($term.Param "donotunique"))) -}} {{- if $term -}}
{{- if not ($tmpScratch.Get $term.Permalink) -}} {{- if not ($tmpScratch.Get $term.Permalink) -}}
{{- $tmpScratch.Set $term.Permalink true -}} {{- $tmpScratch.Set $term.Permalink true -}}
{{- $pages = $pages | append $post -}} {{- $scratch.Add "pages" $post -}}
{{- end -}} {{- end -}}
{{- else -}} {{- else -}}
{{- $pages = $pages | append $post -}} {{- $scratch.Add "pages" $post -}}
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
{{- return $pages -}}

View File

@@ -17,9 +17,9 @@
<link>{{ .Permalink }}</link> <link>{{ .Permalink }}</link>
<description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description> <description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
<generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }} <generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
<language>{{.}}</language>{{end}}{{ with site.Params.author.email }} <language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
<managingEditor>{{.}}{{ with site.Params.author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with site.Params.author.email }} <managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
<webMaster>{{.}}{{ with site.Params.author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }} <webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }} <copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }} <lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
{{ with .OutputFormats.Get "RSS" }} {{ with .OutputFormats.Get "RSS" }}
@@ -30,7 +30,7 @@
<title>{{ .Title }}</title> <title>{{ .Title }}</title>
<link>{{ .Permalink }}</link> <link>{{ .Permalink }}</link>
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate> <pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
{{ with site.Params.author.email }}<author>{{.}}{{ with site.Params.author.name }} ({{.}}){{end}}</author>{{end}} {{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
<guid>{{ .Permalink }}</guid> <guid>{{ .Permalink }}</guid>
<description>{{ .Content | html }}</description> <description>{{ .Content | html }}</description>
</item> </item>

View File

@@ -2,8 +2,8 @@
<h2>{{ .Title }} </h2> <h2>{{ .Title }} </h2>
{{ .Content }} {{ .Content }}
{{ $search := resources.Get "scss/search.scss" | css.Sass | resources.Minify | resources.Fingerprint }} {{ $search := resources.Get "scss/search.scss" | css.Sass | resources.Minify }}
<link rel="stylesheet" href="{{ $search.Permalink }}" integrity="{{ $search.Data.Integrity }}" media="screen"> <link rel="stylesheet" href="{{ $search.Permalink }}" media="screen">
<div class="stork-wrapper"> <div class="stork-wrapper">
<div class="stork-input-wrapper"> <div class="stork-input-wrapper">

View File

@@ -11,8 +11,8 @@
<div class="bergamot-button-group"> <div class="bergamot-button-group">
{{ if or (eq (.Get "preset") "") (eq (.Get "preset") nil) }} {{ if or (eq (.Get "preset") "") (eq (.Get "preset") nil) }}
{{ else }} {{ else }}
<button class="bergamot-button bergamot-play" onclick='window.Bergamot.runPreset(this.parentElement, "bergamot-widget-container-{{ .Get "id" }}", "{{ .Get "preset" }}")'>{{ partial "icon.html" "play" }}{{ i18n "startBergamot" }}</button> <button class="bergamot-button bergamot-play" onclick='window.Bergamot.runPreset(this.parentElement, "bergamot-widget-container-{{ .Get "id" }}", "{{ .Get "preset" }}")'>{{ partial "icon.html" "play" }}Start Bergamot</button>
<button class="bergamot-button bergamot-close bergamot-hidden" onclick='window.Bergamot.close(this.parentElement, "bergamot-widget-container-{{ .Get "id" }}")'>{{ partial "icon.html" "x" }}{{ i18n "closeBergamot" }}</button> <button class="bergamot-button bergamot-close bergamot-hidden" onclick='window.Bergamot.close(this.parentElement, "bergamot-widget-container-{{ .Get "id" }}")'>{{ partial "icon.html" "x" }}Close Bergamot</button>
{{ end }} {{ end }}
</div> </div>

View File

@@ -0,0 +1,12 @@
{{- $scratch := newScratch -}}
{{- partial "geturl.html" (dict "scratch" $scratch "path" (.Get 1)) -}}
{{- $groupconfig := dict
"url" ($scratch.Get "bestUrl")
"basePath" ($scratch.Get "bestPath")
"path" (.Get 1)
"comment" ", entire file"
"code" (readFile (printf "code/%s" (.Get 1)))
"language" (.Get 0)
"opts" "linenos=table"
-}}
{{- partial "highlightgroup.html" $groupconfig -}}

View File

@@ -0,0 +1,60 @@
{{- $source := (readFile (printf "code/%s" (.Get 1))) -}}
{{- $allLines := split $source "\n" -}}
{{- $scratch := newScratch -}}
{{- if not (eq (int (.Get 2)) 1) -}}
{{- $scratch.Set "remLines" (after (sub (int (.Get 2)) 1) $allLines) -}}
{{- else -}}
{{- $scratch.Set "remLines" $allLines -}}
{{- end -}}
{{- $lines := first (add (sub (int (.Get 3)) (int (.Get 2))) 1) ($scratch.Get "remLines") -}}
{{- if (.Get 4) -}}
{{- $scratch.Set "opts" (printf ",%s" (.Get 4)) -}}
{{- else -}}
{{- $scratch.Set "opts" "" -}}
{{- end -}}
{{- if (.Get 5) -}}
{{- $scratch.Set "hidden" (.Get 5) -}}
{{- end -}}
{{- if or (.Page.Params.left_align_code) (.Get 6) -}}
{{- $scratch.Set "prefixLength" -1 -}}
{{- range $line := $lines -}}
{{- $leading := sub (len $line) (len (strings.TrimLeft " " $line)) -}}
{{- if and (ne $line "") (or (eq ($scratch.Get "prefixLength") -1) (le $leading ($scratch.Get "prefixLength"))) -}}
{{- $scratch.Set "prefixLength" $leading -}}
{{- end -}}
{{- end -}}
{{- $scratch.Set "joinedLines" "" -}}
{{- range $line := $lines -}}
{{- $scratch.Add "joinedLines" (substr $line ($scratch.Get "prefixLength")) -}}
{{- $scratch.Add "joinedLines" "\n" -}}
{{- end -}}
{{- else -}}
{{- $scratch.Set "joinedLines" (delimit $lines "\n") -}}
{{- end -}}
{{- partial "geturl.html" (dict "scratch" $scratch "path" (.Get 1) "lines" (slice (.Get 2) (.Get 3))) -}}
{{- partial "linerangestr.html" (dict "scratch" $scratch "from" (.Get 2) "to" (.Get 3)) -}}
{{- with ($scratch.Get "hidden") -}}
<details><summary>{{- . | markdownify -}}</summary>
{{- end -}}
{{- $groupconfig := dict
"url" ($scratch.Get "bestUrl")
"basePath" ($scratch.Get "bestPath")
"path" (.Get 1)
"comment" ($scratch.Get "comment")
"code" ($scratch.Get "joinedLines")
"firstLine" (int (.Get 2))
"lastLine" (int (.Get 3))
"language" (.Get 0)
"offset" ($scratch.Get "prefixLength")
"opts" (printf "linenos=table,linenostart=%d%s" (.Get 2) ($scratch.Get "opts"))
-}}
{{- partial "highlightgroup.html" $groupconfig -}}
{{- with ($scratch.Get "hidden") -}}
</details>
{{- end -}}

View File

@@ -0,0 +1,3 @@
{{- $scratch := newScratch -}}
{{- partial "geturl.html" (dict "scratch" $scratch "path" (.Get 0)) -}}
{{- $scratch.Get "bestUrl" -}}

View File

@@ -5,6 +5,7 @@
{{- $line := .Get 4 -}} {{- $line := .Get 4 -}}
{{- $lines := split (trim .Inner "\n") "\n" -}} {{- $lines := split (trim .Inner "\n") "\n" -}}
{{- $scratch := newScratch -}}
{{- $url := printf "https://github.com/%s/blob/%s/%s#L%d" $repo $commit $file $line -}} {{- $url := printf "https://github.com/%s/blob/%s/%s#L%d" $repo $commit $file $line -}}
{{- $comment := partial "linerangestr.html" (dict "from" 0 "to" $line) -}} {{- partial "linerangestr.html" (dict "scratch" $scratch "from" 0 "to" $line) -}}
{{- partial "highlightgroup.html" (dict "url" $url "path" $file "comment" $comment "code" (trim .Inner "\n") "language" $lang) -}} {{- partial "highlightgroup.html" (dict "url" $url "path" $file "comment" ($scratch.Get "comment") "code" (trim .Inner "\n") "language" $lang) -}}

View File

@@ -1,10 +1,10 @@
{{- $name := .Get 0 -}} {{- $name := .Get 0 -}}
{{- $number := 1 -}} {{- $number := 1 -}}
{{- with .Page.Store.Get "internal-ref-counter" -}} {{- with .Page.Scratch.Get "internal-ref-counter" -}}
{{- $number = add . 1 }} {{- $number = add . 1 }}
{{- end -}} {{- end -}}
{{- .Page.Store.Set "internal-ref-counter" $number -}} {{- .Page.Scratch.Set "internal-ref-counter" $number -}}
{{- .Page.Store.SetInMap "internal-ref" $name $number -}} {{- .Page.Scratch.SetInMap "internal-ref" $name $number -}}
<span class="internal-ref" id="internal-ref-{{ $name }}"> <span class="internal-ref" id="internal-ref-{{ $name }}">
{{ .Inner }} {{ .Inner }}

View File

@@ -1,5 +1,5 @@
{{- $name := .Get 0 -}} {{- $name := .Get 0 -}}
{{- $number := index (.Page.Store.Get "internal-ref") $name -}} {{- $number := index (.Page.Scratch.Get "internal-ref") $name -}}
<a href="#internal-ref-{{ $name }}"> <a href="#internal-ref-{{ $name }}">
{{ .Inner }} {{ .Inner }}

View File

@@ -0,0 +1,10 @@
{{- $scratch := newScratch -}}
{{- partial "geturl.html" (dict "scratch" $scratch "path" (.Get 0) "siteSourceUrl" .Site.Params.siteSourceUrl "submoduleLinks" .Site.Data.submodules) -}}
{{- $groupconfig := dict
"url" ($scratch.Get "bestUrl")
"basePath" ($scratch.Get "bestPath")
"path" (.Get 0)
"comment" ", entire file"
"content" (safeHTML (printf "<pre><code>%s</code></pre>" (htmlEscape (readFile (printf "code/%s" (.Get 0))))))
-}}
{{- partial "group.html" $groupconfig -}}

View File

@@ -1,6 +1,5 @@
<span class="sidenote"> <span class="sidenote">
<label class="sidenote-label" for="{{- .Get 1 -}}">{{- .Get 2 | markdownify -}}</label> <label class="sidenote-label" for="{{- .Get 1 -}}">{{- .Get 2 | markdownify -}}</label>
{{- /* chomp trailing whitespace */ -}}
<input class="sidenote-checkbox" style="display: none;" type="checkbox" id="{{- .Get 1 -}}"></input> <input class="sidenote-checkbox" style="display: none;" type="checkbox" id="{{- .Get 1 -}}"></input>
{{- if $offset := .Get 3 -}} {{- if $offset := .Get 3 -}}
<span class="sidenote-content sidenote-{{- .Get 0 -}}" style="margin-top: {{- $offset -}}rem"> <span class="sidenote-content sidenote-{{- .Get 0 -}}" style="margin-top: {{- $offset -}}rem">
@@ -11,6 +10,4 @@
{{- .Inner -}} {{- .Inner -}}
<span class="sidenote-delimiter">]</span> <span class="sidenote-delimiter">]</span>
</span> </span>
{{- /* chomp trailing whitespace */ -}}
</span> </span>
{{- /* chomp trailing whitespace */ -}}

View File

@@ -0,0 +1,3 @@
<div style="background-color: tomato; color: white; padding: 10px;">
<em>TODO: </em>{{- .Inner -}}
</div>

View File

@@ -1,34 +0,0 @@
{{- /* Note: changing the baseof template because the title, tags, etc. of a regular post are still valid. */ -}}
<!DOCTYPE html>
<html lang="{{ .Site.Language.Lang }}">
<head>
{{- partial "head.html" . -}}
{{ $writingcss := resources.Get "scss/writing.scss" | css.Sass | resources.Minify | resources.Fingerprint }}
<link rel="stylesheet" href="{{ $writingcss.Permalink }}" integrity="{{ $writingcss.Data.Integrity }}">
{{ if .Params.custom_css }}
{{ range $customCss := .Params.custom_css }}
{{ $renderedCustomCss := page.Resources.Get $customCss | css.Sass (dict "includePaths" (slice "themes/vanilla/assets/scss")) | resources.Minify | resources.Fingerprint }}
<link rel="stylesheet" href="{{ $renderedCustomCss.Permalink }}" integrity="{{ $renderedCustomCss.Data.Integrity }}">
{{ end }}
{{ end }}
</head>
<body>
{{ with .Params.body_start_partial }}
{{ partial . $ }}
{{ end }}
{{- partial "header.html" . -}}
<div class="container"><hr class="header-divider"></div>
<main class="container">
{{- if .Draft -}}
{{- partial "warning.html" (i18n "postDraft") -}}
{{- end -}}
{{- block "main" . }}{{- end }}
</main>
{{- block "after" . }}{{- end }}
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -8,7 +8,7 @@ license = "MIT"
# homepage = "http://example.com/" # homepage = "http://example.com/"
# tags = [] # tags = []
# features = [] # features = []
min_version = "0.160.1" min_version = "0.41"
[author] [author]
name = "Danila Fedorin" name = "Danila Fedorin"