internal/godoc/dochtml: add htmlPackage function
The htmlPackage is moved to a function. In a future CL, it will be used
to parse different templates.
Change-Id: I419df42973b5d924cbcaa8889d542890872fe369
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/258999
Trust: Julie Qiu <julie@golang.org>
Run-TryBot: Julie Qiu <julie@golang.org>
TryBot-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
diff --git a/internal/godoc/dochtml/dochtml.go b/internal/godoc/dochtml/dochtml.go
index c268abd..0db5750 100644
--- a/internal/godoc/dochtml/dochtml.go
+++ b/internal/godoc/dochtml/dochtml.go
@@ -118,7 +118,8 @@
return linkHTML(name, opt.SourceLinkFunc(node), "Documentation-source")
}
- tmpl := template.Must(htmlPackage.Clone()).Funcs(map[string]interface{}{
+ h := htmlPackage()
+ tmpl := template.Must(h.Clone()).Funcs(map[string]interface{}{
"render_short_synopsis": r.ShortSynopsis,
"render_synopsis": r.Synopsis,
"render_doc": r.DocHTML,
diff --git a/internal/godoc/dochtml/template.go b/internal/godoc/dochtml/template.go
index d10974e..4c7c7e8 100644
--- a/internal/godoc/dochtml/template.go
+++ b/internal/godoc/dochtml/template.go
@@ -15,26 +15,28 @@
// htmlPackage is the template used to render documentation HTML.
// TODO(golang.org/issue/5060): finalize URL scheme and design for notes,
// then it becomes more viable to factor out inline CSS style.
-var htmlPackage = template.Must(template.New("package").Funcs(
- map[string]interface{}{
- "ternary": func(q, a, b interface{}) interface{} {
- v := reflect.ValueOf(q)
- vz := reflect.New(v.Type()).Elem()
- if reflect.DeepEqual(v.Interface(), vz.Interface()) {
- return b
- }
- return a
- },
- "render_short_synopsis": (*render.Renderer)(nil).ShortSynopsis,
- "render_synopsis": (*render.Renderer)(nil).Synopsis,
- "render_doc": (*render.Renderer)(nil).DocHTML,
- "render_decl": (*render.Renderer)(nil).DeclHTML,
- "render_code": (*render.Renderer)(nil).CodeHTML,
- "file_link": func() string { return "" },
- "source_link": func() string { return "" },
- "play_url": func(*doc.Example) string { return "" },
- "safe_id": render.SafeGoID,
- },
-).Parse(tmplHTML))
+func htmlPackage() *template.Template {
+ return template.Must(template.New("package").Funcs(tmpl).Parse(tmplHTML))
+}
const tmplHTML = `{{- "" -}}` + tmplSidenav + tmplBody + tmplExample
+
+var tmpl = map[string]interface{}{
+ "ternary": func(q, a, b interface{}) interface{} {
+ v := reflect.ValueOf(q)
+ vz := reflect.New(v.Type()).Elem()
+ if reflect.DeepEqual(v.Interface(), vz.Interface()) {
+ return b
+ }
+ return a
+ },
+ "render_short_synopsis": (*render.Renderer)(nil).ShortSynopsis,
+ "render_synopsis": (*render.Renderer)(nil).Synopsis,
+ "render_doc": (*render.Renderer)(nil).DocHTML,
+ "render_decl": (*render.Renderer)(nil).DeclHTML,
+ "render_code": (*render.Renderer)(nil).CodeHTML,
+ "file_link": func() string { return "" },
+ "source_link": func() string { return "" },
+ "play_url": func(*doc.Example) string { return "" },
+ "safe_id": render.SafeGoID,
+}