[x/go.dev] all: remove use of partial function
Templates already provide a way to call other templates.
Delete partial, which is just a second way that is not as
well integrated into HTML sanitizing.
Change-Id: I34a258ff133439966a4b5119df3b92a00660a1cd
X-GoDev-Commit: 0e5902a60b5b5808fc1e94e7a004021547defe23
diff --git a/go.dev/cmd/internal/site/tmpl.go b/go.dev/cmd/internal/site/tmpl.go
index 1aab413..b89c4e1 100644
--- a/go.dev/cmd/internal/site/tmpl.go
+++ b/go.dev/cmd/internal/site/tmpl.go
@@ -5,12 +5,10 @@
package site
import (
- "bytes"
"crypto/sha256"
"encoding/base64"
"encoding/hex"
"fmt"
- "io/ioutil"
"os"
"path"
"path/filepath"
@@ -34,7 +32,6 @@
"isset": isset,
"list": list,
"markdownify": markdownify,
- "partial": site.partial,
"path": pathFn,
"replace": replace,
"replaceRE": replaceRE,
@@ -60,22 +57,6 @@
return t
}
-func (site *Site) runTemplate(name string, arg interface{}) (template.HTML, error) {
- data, err := ioutil.ReadFile(site.file(name))
- if err != nil {
- return "", err
- }
- t := site.clone().New(name)
- if err := tmplfunc.Parse(t, string(data)); err != nil {
- return "", err
- }
- var buf bytes.Buffer
- if err := t.Execute(&buf, arg); err != nil {
- return "", err
- }
- return template.HTML(buf.String()), nil
-}
-
func toString(x interface{}) string {
switch x := x.(type) {
case string:
@@ -161,10 +142,6 @@
return h
}
-func (site *Site) partial(name string, data interface{}) (template.HTML, error) {
- return site.runTemplate("layouts/partials/"+name, data)
-}
-
func pathFn() pathPkg { return pathPkg{} }
type pathPkg struct{}
diff --git a/go.dev/layouts/_default/baseof.html b/go.dev/layouts/_default/baseof.html
index c4acef8..a2ff3a5 100644
--- a/go.dev/layouts/_default/baseof.html
+++ b/go.dev/layouts/_default/baseof.html
@@ -60,7 +60,7 @@
alt="Go">
</a>
<div class="Header-rightContent">
- {{ partial "searchForm.html" . }}
+ {{template "search-form" .}}
<ul class="Header-menu">
{{- $currentPage := .}}
{{- range .Site.Menus.main}}
@@ -129,9 +129,9 @@
<div class="Footer-links">
{{- range .Site.Menus.footer}}
<div class="Footer-linkColumn">
- {{partial "footer/link.html" (dict "menuItem" . "Site" $currentPage.Site)}}
+ {{template "footer-link" (dict "menuItem" . "Site" $currentPage.Site)}}
{{- range .Children}}
- {{partial "footer/link.html" (dict "menuItem" . "Site" $currentPage.Site)}}
+ {{template "footer-link" (dict "menuItem" . "Site" $currentPage.Site)}}
{{end}}
</div>
{{- end}}
@@ -186,4 +186,34 @@
<script src="/js/hats.js"></script>
</footer>
</body>
-</html>
\ No newline at end of file
+</html>
+
+{{define "search-form"}}
+<form
+ class="js-searchForm SearchForm" action="https://pkg.go.dev/search" role="search">
+ <button
+ class="js-searchFormSubmit SearchForm-submit"
+ aria-label="Search for a package">
+ <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M11.76 10.27L17.49 16L16 17.49L10.27 11.76C9.2 12.53 7.91 13 6.5 13C2.91 13 0 10.09 0 6.5C0 2.91 2.91 0 6.5 0C10.09 0 13 2.91 13 6.5C13 7.91 12.53 9.2 11.76 10.27ZM6.5 2C4.01 2 2 4.01 2 6.5C2 8.99 4.01 11 6.5 11C8.99 11 11 8.99 11 6.5C11 4.01 8.99 2 6.5 2Z">
+ </svg>
+ </button>
+ <input class="SearchForm-input" aria-label="Search for a package" type="text" name="q" size="1"
+ placeholder="Search for a package" autocapitalize="off" autocomplete="off" autocorrect="off"
+ spellcheck="false" title="Search for a package">
+ </input>
+</form>
+{{end}}
+
+{{define "footer-link"}}
+{{- $url := .menuItem.URL}}
+{{- if and (not .Site.IsServer) (eq .Identifier "learn")}}
+ {{- $url = "https://learn.go.dev"}}
+{{- end}}
+{{- if not .Site.IsServer}}
+ {{- $url = $url | absURL}}
+{{- end}}
+<a href="{{$url}}" class="Footer-link{{if not .menuItem.Parent}} Footer-link--primary{{end}}" title="{{.menuItem.Title}}" data-identifier="{{ .menuItem.Identifier }}">
+ {{.menuItem.Name}}
+</a>
+{{end}}
diff --git a/go.dev/layouts/learn/section.html b/go.dev/layouts/learn/section.html
index aaad0c6..485c4ca 100644
--- a/go.dev/layouts/learn/section.html
+++ b/go.dev/layouts/learn/section.html
@@ -3,7 +3,7 @@
<div class="Container">
<div class="Learn-heroInner">
<div class="Learn-heroContent">
- {{ partial "breadcrumbs.html" . }}
+ {{breadcrumbs .}}
<h1>Install the latest version of Go</h1>
<p>
Install the latest version of Go. For instructions to download and install
@@ -29,7 +29,7 @@
</div>
</div>
<p>
- Download packages for
+ Download packages for
<a class="js-downloadWin">Windows 64-bit</a>,
<a class="js-downloadMac">macOS</a>,
<a class="js-downloadLinux">Linux</a>, and
@@ -44,7 +44,7 @@
<ul class="Learn-quickstarts Learn-cardList">
{{ range first 3 $.Site.Data.learn.quickstart.links }}
<li class="Learn-quickstart Learn-card">
- {{ partial "learn/card.html" . }}
+ {{template "learn-card" .}}
</li>
{{end}}
</ul>
@@ -65,7 +65,7 @@
<ul class="Learn-cardList">
{{ range first 4 $.Site.Data.learn.guidedLearning.links }}
<li class="Learn-card">
- {{ partial "learn/card.html" . }}
+ {{template "learn-card" .}}
</li>
{{ end }}
</ul>
@@ -82,7 +82,7 @@
<ul class="Learn-cardList">
{{ range first 4 $.Site.Data.learn.courses.links }}
<li class="Learn-card">
- {{ partial "learn/card.html" . }}
+ {{template "learn-card" .}}
</li>
{{ end }}
</ul>
@@ -99,7 +99,7 @@
<ul class="Learn-cardList">
{{ range first 4 $.Site.Data.learn.cloud.links }}
<li class="Learn-card">
- {{ partial "learn/selfPacedCard.html" . }}
+ {{template "learn-self-paced-card" .}}
</li>
</li>
{{ end }}
@@ -117,7 +117,7 @@
<ul class="Learn-cardList Learn-bookList">
{{ range first 5 $.Site.Data.learn.books.links }}
<li class="Learn-card Learn-book">
- {{ partial "learn/book.html" . }}
+ {{template "learn-book" .}}
</li>
{{ end }}
</ul>
@@ -191,3 +191,101 @@
</div>
</section>
{{end}}
+
+{{define "learn-card"}}
+<div class="Card">
+ <div class="Card-inner">
+ {{if .thumbnail}}
+ <div
+ class="Card-thumbnail"
+ style="background-image: url('{{.thumbnail}}')"
+ ></div>
+ {{end}}
+ <div class="Card-content">
+ <div class="Card-contentTitle">{{.title}}</div>
+ <p class="Card-contentBody">{{.content | safeHTML}}</p>
+ <div class="Card-contentCta">
+ <a href="{{.url}}" target="_blank">
+ <span>{{.cta}}</span>
+ <svg
+ xmlns="http://www.w3.org/2000/svg"
+ width="16"
+ height="16"
+ fill="none"
+ viewBox="0 0 24 24"
+ >
+ <path
+ fill="#007D9C"
+ fill-rule="evenodd"
+ d="M5 5v14h14v-7h2v7a2 2 0 01-2 2H5a2 2 0 01-2-2V5c0-1.1.9-2 2-2h7v2H5zm9 0V3h7v7h-2V6.4l-9.8 9.8-1.4-1.4L17.6 5H14z"
+ clip-rule="evenodd"
+ />
+ </svg>
+ </a>
+ </div>
+ </div>
+ </div>
+</div>
+{{end}}
+
+{{define "learn-self-paced-card"}}
+<div class="Card">
+ <a href="{{.url}}" target="_blank" rel="noopener">
+ <div class="Card-inner">
+ {{if .thumbnail}}
+ <div
+ class="Card-thumbnail"
+ style="background-image: url('{{.thumbnail}}')"
+ ></div>
+ {{end}}
+ <div class="Card-content">
+ <div class="Card-contentTitle">{{.title}}</div>
+ <div class="Card-selfPacedFooter">
+ <div class="Card-selfPacedCredits">
+ <span>{{ .length }}</span> •
+ <span>{{.credits}} Credits</span>
+ </div>
+ <div class="Card-selfPacedRating">
+ <div class="Card-starRating" style="width: {{ .rating }}rem"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </a>
+</div>
+{{end}}
+
+{{define "learn-book"}}
+<div class="Book">
+ <a href="{{.url}}" target="_blank" rel="noopener">
+ <div class="Book-inner">
+ {{if .thumbnail}}
+ <div class="Book-thumbnail">
+ <img alt="{{.title}} thumbnail." src="{{.thumbnail}}" />
+ </div>
+ {{end}}
+ <div class="Book-content">
+ <p class="Book-title">{{.title}}</p>
+ <p class="Book-description">{{.description}}</p>
+ <div class="Book-cta">
+ <span>{{.cta}}</span>
+ <svg
+ xmlns="http://www.w3.org/2000/svg"
+ width="16"
+ height="16"
+ fill="none"
+ viewBox="0 0 24 24"
+ >
+ <path
+ fill="#007D9C"
+ fill-rule="evenodd"
+ d="M5 5v14h14v-7h2v7a2 2 0 01-2 2H5a2 2 0 01-2-2V5c0-1.1.9-2 2-2h7v2H5zm9 0V3h7v7h-2V6.4l-9.8 9.8-1.4-1.4L17.6 5H14z"
+ clip-rule="evenodd"
+ />
+ </svg>
+ </div>
+ </div>
+ </div>
+ </a>
+</div>
+{{end}}
diff --git a/go.dev/layouts/partials/breadcrumbs.html b/go.dev/layouts/partials/breadcrumbs.html
deleted file mode 100644
index e7dfadf..0000000
--- a/go.dev/layouts/partials/breadcrumbs.html
+++ /dev/null
@@ -1,25 +0,0 @@
-
- <div class="BreadcrumbNav">
- <ol class="BreadcrumbNav-inner">
- {{ template "breadcrumbnav" (dict "p1" . "p2" .) }}
- </ol>
- {{ define "breadcrumbnav" }}
- {{ if .p1.Parent }}
- {{ template "breadcrumbnav" (dict "p1" .p1.Parent "p2" .p2 ) }}
- {{ else if not .p1.IsHome }}
- {{ template "breadcrumbnav" (dict "p1" .p1.Site.Home "p2" .p2 ) }}
- {{ end }}
-
- {{ if not (eq .p1.Title "go.dev") }}
- <li class="BreadcrumbNav-li {{ if eq .p1 .p2 }}active{{ end }}">
- <a class="BreadcrumbNav-link" href="{{ .p1.Permalink }}">
- {{ if isset .p1.Params "company" }}
- {{ .p1.Params.company }}
- {{ else }}
- {{ .p1.Title }}
- {{ end }}
- </a>
- </li>
- {{end}}
- {{ end }}
- </div>
\ No newline at end of file
diff --git a/go.dev/layouts/partials/footer/link.html b/go.dev/layouts/partials/footer/link.html
deleted file mode 100644
index ea23e6e..0000000
--- a/go.dev/layouts/partials/footer/link.html
+++ /dev/null
@@ -1,10 +0,0 @@
-{{- $url := .menuItem.URL}}
-{{- if and (not .Site.IsServer) (eq .Identifier "learn")}}
- {{- $url = "https://learn.go.dev"}}
-{{- end}}
-{{- if not .Site.IsServer}}
- {{- $url = $url | absURL}}
-{{- end}}
-<a href="{{$url}}" class="Footer-link{{if not .menuItem.Parent}} Footer-link--primary{{end}}" title="{{.menuItem.Title}}" data-identifier="{{ .menuItem.Identifier }}">
- {{.menuItem.Name}}
-</a>
diff --git a/go.dev/layouts/partials/learn/book.html b/go.dev/layouts/partials/learn/book.html
deleted file mode 100644
index d1ccd78..0000000
--- a/go.dev/layouts/partials/learn/book.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<div class="Book">
- <a href="{{.url}}" target="_blank" rel="noopener">
- <div class="Book-inner">
- {{if .thumbnail}}
- <div class="Book-thumbnail">
- <img alt="{{.title}} thumbnail." src="{{.thumbnail}}" />
- </div>
- {{end}}
- <div class="Book-content">
- <p class="Book-title">{{.title}}</p>
- <p class="Book-description">{{.description}}</p>
- <div class="Book-cta">
- <span>{{.cta}}</span>
- <svg
- xmlns="http://www.w3.org/2000/svg"
- width="16"
- height="16"
- fill="none"
- viewBox="0 0 24 24"
- >
- <path
- fill="#007D9C"
- fill-rule="evenodd"
- d="M5 5v14h14v-7h2v7a2 2 0 01-2 2H5a2 2 0 01-2-2V5c0-1.1.9-2 2-2h7v2H5zm9 0V3h7v7h-2V6.4l-9.8 9.8-1.4-1.4L17.6 5H14z"
- clip-rule="evenodd"
- />
- </svg>
- </div>
- </div>
- </div>
- </a>
-</div>
diff --git a/go.dev/layouts/partials/learn/card.html b/go.dev/layouts/partials/learn/card.html
deleted file mode 100644
index a53dedc..0000000
--- a/go.dev/layouts/partials/learn/card.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<div class="Card">
- <div class="Card-inner">
- {{if .thumbnail}}
- <div
- class="Card-thumbnail"
- style="background-image: url('{{.thumbnail}}')"
- ></div>
- {{end}}
- <div class="Card-content">
- <div class="Card-contentTitle">{{.title}}</div>
- <p class="Card-contentBody">{{.content | safeHTML}}</p>
- <div class="Card-contentCta">
- <a href="{{.url}}" target="_blank">
- <span>{{.cta}}</span>
- <svg
- xmlns="http://www.w3.org/2000/svg"
- width="16"
- height="16"
- fill="none"
- viewBox="0 0 24 24"
- >
- <path
- fill="#007D9C"
- fill-rule="evenodd"
- d="M5 5v14h14v-7h2v7a2 2 0 01-2 2H5a2 2 0 01-2-2V5c0-1.1.9-2 2-2h7v2H5zm9 0V3h7v7h-2V6.4l-9.8 9.8-1.4-1.4L17.6 5H14z"
- clip-rule="evenodd"
- />
- </svg>
- </a>
- </div>
- </div>
- </div>
-</div>
diff --git a/go.dev/layouts/partials/learn/selfPacedCard.html b/go.dev/layouts/partials/learn/selfPacedCard.html
deleted file mode 100644
index 520dc85..0000000
--- a/go.dev/layouts/partials/learn/selfPacedCard.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<div class="Card">
- <a href="{{.url}}" target="_blank" rel="noopener">
- <div class="Card-inner">
- {{if .thumbnail}}
- <div
- class="Card-thumbnail"
- style="background-image: url('{{.thumbnail}}')"
- ></div>
- {{end}}
- <div class="Card-content">
- <div class="Card-contentTitle">{{.title}}</div>
- <div class="Card-selfPacedFooter">
- <div class="Card-selfPacedCredits">
- <span>{{ .length }}</span> •
- <span>{{.credits}} Credits</span>
- </div>
- <div class="Card-selfPacedRating">
- <div class="Card-starRating" style="width: {{ .rating }}rem"></div>
- </div>
- </div>
- </div>
- </div>
- </a>
-</div>
diff --git a/go.dev/layouts/partials/searchForm.html b/go.dev/layouts/partials/searchForm.html
deleted file mode 100644
index e1116e3..0000000
--- a/go.dev/layouts/partials/searchForm.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-<form
- class="js-searchForm SearchForm" action="https://pkg.go.dev/search" role="search">
- <button
- class="js-searchFormSubmit SearchForm-submit"
- aria-label="Search for a package">
- <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
- <path fill-rule="evenodd" clip-rule="evenodd" d="M11.76 10.27L17.49 16L16 17.49L10.27 11.76C9.2 12.53 7.91 13 6.5 13C2.91 13 0 10.09 0 6.5C0 2.91 2.91 0 6.5 0C10.09 0 13 2.91 13 6.5C13 7.91 12.53 9.2 11.76 10.27ZM6.5 2C4.01 2 2 4.01 2 6.5C2 8.99 4.01 11 6.5 11C8.99 11 11 8.99 11 6.5C11 4.01 8.99 2 6.5 2Z">
- </svg>
- </button>
- <input class="SearchForm-input" aria-label="Search for a package" type="text" name="q" size="1"
- placeholder="Search for a package" autocapitalize="off" autocomplete="off" autocorrect="off"
- spellcheck="false" title="Search for a package">
- </input>
-</form>
diff --git a/go.dev/layouts/partials/useCaseNav.html b/go.dev/layouts/partials/useCaseNav.html
deleted file mode 100644
index 1c4ae1e..0000000
--- a/go.dev/layouts/partials/useCaseNav.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<a href="#overview" class="UseCase-anchorLink anchor-link selected">Overview</a>
-<a href="#key-benefits" class="UseCase-anchorLink anchor-link">Key Benefits</a>
-<a href="#use-case" class="UseCase-anchorLink anchor-link">Use Case</a>
-<a href="#featured-users" class="UseCase-anchorLink anchor-link">Featured Users</a>
-<a href="#get-started" class="UseCase-anchorLink anchor-link">Get Started</a>
\ No newline at end of file
diff --git a/go.dev/layouts/solutions/single.html b/go.dev/layouts/solutions/single.html
index c763cf5..2d8655c 100644
--- a/go.dev/layouts/solutions/single.html
+++ b/go.dev/layouts/solutions/single.html
@@ -4,7 +4,7 @@
<div class="WhoUsesSubPage-heroInner{{if (eq .Params.Series "Case Studies")}}--caseStudy{{else}}--useCase{{end}}">
<div class="WhoUsesSubPage-heroContent{{if (eq .Params.Series "Case Studies")}}--caseStudy{{else}}--useCase{{end}}">
<div class="WhoUsesSubPage-heroText{{if (eq .Params.Series "Case Studies")}}--caseStudy{{else}}--useCase{{end}}">
- {{ partial "breadcrumbs.html" . }}
+ {{breadcrumbs .}}
<h1>{{.Title}}</h1>
{{range .Params.authors}}
<div class="Article-author">{{.}}</div>
diff --git a/go.dev/templates/breadcrumbs.tmpl b/go.dev/templates/breadcrumbs.tmpl
new file mode 100644
index 0000000..be0fe87
--- /dev/null
+++ b/go.dev/templates/breadcrumbs.tmpl
@@ -0,0 +1,26 @@
+{{define "breadcrumbnav"}}
+{{- if .p1.Parent}}
+ {{- template "breadcrumbnav" (dict "p1" .p1.Parent "p2" .p2 )}}
+{{- else if not .p1.IsHome}}
+ {{- template "breadcrumbnav" (dict "p1" .p1.Site.Home "p2" .p2 ) }}
+{{- end}}
+{{- if not (eq .p1.Title "go.dev")}}
+ <li class="BreadcrumbNav-li {{if eq .p1 .p2}}active{{end}}">
+ <a class="BreadcrumbNav-link" href="{{.p1.Permalink}}">
+ {{- if isset .p1.Params "company"}}
+ {{.p1.Params.company}}
+ {{- else}}
+ {{.p1.Title}}
+ {{- end}}
+ </a>
+ </li>
+{{- end}}
+{{end}}
+
+{{define "breadcrumbs"}}
+<div class="BreadcrumbNav">
+ <ol class="BreadcrumbNav-inner">
+ {{template "breadcrumbnav" (dict "p1" . "p2" .)}}
+ </ol>
+</div>
+{{end}}