internal/godoc/dochtml/internal/render: create copy of docDataHTML and exampleHTML
A copy of docDataHTML and exampleHTML are made, so that we can edit
those templates separately.
Change-Id: I858ab902b9857c48079c20f04c330387f1acf765
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/260802
Trust: Julie Qiu <julie@golang.org>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
diff --git a/internal/godoc/dochtml/internal/render/render.go b/internal/godoc/dochtml/internal/render/render.go
index 67e6d27..312bee8 100644
--- a/internal/godoc/dochtml/internal/render/render.go
+++ b/internal/godoc/dochtml/internal/render/render.go
@@ -15,6 +15,8 @@
"github.com/google/safehtml"
"github.com/google/safehtml/template"
+ "golang.org/x/pkgsite/internal"
+ "golang.org/x/pkgsite/internal/experiment"
"golang.org/x/pkgsite/internal/godoc/internal/doc"
)
@@ -66,6 +68,33 @@
DisablePermalinks bool
}
+// docDataTmpl renders documentation. It expects a docData.
+var docDataTmpl = template.Must(template.New("").Parse(`
+{{- range .Elements -}}
+ {{- if .IsHeading -}}
+ <h3 id="{{.ID}}">{{.Title}}
+ {{- if not $.DisablePermalinks}}<a href="#{{.ID}}">¶</a>{{end -}}
+ </h3>
+ {{else if .IsPreformat -}}
+ <pre>{{.Body}}</pre>
+ {{- else -}}
+ <p>{{.Body}}</p>
+ {{- end -}}
+{{end}}`))
+
+// exampleTmpl renders code for an example. It expect an Example.
+var exampleTmpl = template.Must(template.New("").Parse(`
+<pre class="Documentation-exampleCode">
+{{range .}}
+ {{- if .Comment -}}
+ <span class="comment">{{.Text}}</span>
+ {{- else -}}
+ {{.Text}}
+ {{- end -}}
+{{end}}
+</pre>
+`))
+
// legacyDocDataTmpl renders documentation. It expects a docData.
var legacyDocDataTmpl = template.Must(template.New("").Parse(`
{{- range .Elements -}}
@@ -109,14 +138,21 @@
disablePermalinks = opts.DisablePermalinks
}
pids := newPackageIDs(pkg, others...)
+
+ d := legacyDocDataTmpl
+ e := legacyExampleTmpl
+ if experiment.IsActive(ctx, internal.ExperimentUnitPage) {
+ d = docDataTmpl
+ e = exampleTmpl
+ }
return &Renderer{
fset: fset,
pids: pids,
packageURL: packageURL,
disableHotlinking: disableHotlinking,
disablePermalinks: disablePermalinks,
- docTmpl: legacyDocDataTmpl,
- exampleTmpl: legacyExampleTmpl,
+ docTmpl: d,
+ exampleTmpl: e,
}
}