aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2011-10-18 16:23:35 -0400
committerRuss Cox <rsc@golang.org>2011-10-18 16:23:35 -0400
commitcb2f6cb05d205a6b55ac1a4055a66de4178e3d53 (patch)
treea9f7e9ac813b7ed4b5e7877d1679b62e38e85b1e
parent7ecf6c997e786b4812ae5d5f6afade15a3717fa9 (diff)
downloadgo-cb2f6cb05d205a6b55ac1a4055a66de4178e3d53.tar.gz
go-cb2f6cb05d205a6b55ac1a4055a66de4178e3d53.zip
godoc: generate package toc in template, not in JavaScript
1. Generate TOC for package pages using template, instead of using JavaScript magic. This makes the pages generated by godoc -html easier to export to other systems. 2. Make TOC one column. It's hard to do two columns portably without invoking JavaScript. 3. Since the TOC is only one column, show full type signatures for functions and methods. Many times that's all you need to see anyway. 4. Name the section after the TOC "Overview". Naming it something is important, to set it off from the TOC and so that there's a quick link to it in the TOC. For now, some illustrative examples: http://swtch.com:6060/pkg/io/ http://swtch.com:6060/pkg/strings/ http://swtch.com:6060/pkg/tabwriter/ http://swtch.com:6060/pkg/unicode/ Fixes #1982. R=gri, bradfitz, r CC=golang-dev https://golang.org/cl/5303044
-rw-r--r--doc/godocs.js1
-rw-r--r--lib/godoc/package.html103
2 files changed, 69 insertions, 35 deletions
diff --git a/doc/godocs.js b/doc/godocs.js
index 58ce52f85d..bbf5ea2893 100644
--- a/doc/godocs.js
+++ b/doc/godocs.js
@@ -57,6 +57,7 @@ function godocs_bindSearchEvents() {
* links. "Decorates" the element with id=="nav" with this table of contents.
*/
function godocs_generateTOC() {
+ if (document.getElementById('manual-nav')) { return; }
var navbar = document.getElementById('nav');
if (!navbar) { return; }
diff --git a/lib/godoc/package.html b/lib/godoc/package.html
index 55812d17bc..e2889f5934 100644
--- a/lib/godoc/package.html
+++ b/lib/godoc/package.html
@@ -3,10 +3,47 @@
Use of this source code is governed by a BSD-style
license that can be found in the LICENSE file.
-->
+<!-- Table of contents; must be named manual-nav to turn off auto nav. -->
+<div id="manual-nav">
+{{with .PDoc}}
+ <dl>
+ <dd><a href="#Overview">Overview</a></dd>
+ {{if .Consts}}
+ <dd><a href="#Constants">Constants</a></dd>
+ {{end}}
+ {{if .Vars}}
+ <dd><a href="#Variables">Variables</a></dd>
+ {{end}}
+ {{range .Funcs}}
+ {{$name_html := html .Name}}
+ <dd><a href="#{{$name_html}}">{{node_html .Decl $.FSet}}</a></dd>
+ {{end}}
+ {{range .Types}}
+ {{$tname := printf "%s" .Type.Name}}
+ {{$tname_html := node_html .Type.Name $.FSet}}
+ <dd><a href="#{{$tname_html}}">type {{$tname_html}}</a></dd>
+ {{range .Factories}}
+ {{$name_html := html .Name}}
+ <dd>&nbsp; &nbsp; <a href="#{{$name_html}}">{{node_html .Decl $.FSet}}</a></dd>
+ {{end}}
+ {{range .Methods}}
+ {{$name_html := html .Name}}
+ <dd>&nbsp; &nbsp; <a href="#{{$tname_html}}.{{$name_html}}">{{node_html .Decl $.FSet}}</a></dd>
+ {{end}}
+ {{end}}
+ {{if .Bugs}}
+ <dd><a href="#Bugs">Bugs</a></dd>
+ {{end}}
+ </dl>
+{{end}}
+</div>
+
+<!-- Main page -->
{{with .PAst}}
<pre>{{node_html . $.FSet}}</pre>
{{end}}
{{with .PDoc}}
+ <h2 id="Overview">Overview</h2>
<!-- PackageName is printed as title by the top-level template -->
{{if $.IsPkg}}
<p><code>import "{{html .ImportPath}}"</code></p>
@@ -38,47 +75,43 @@
<pre>{{node_html .Decl $.FSet}}</pre>
{{end}}
{{end}}
- {{with .Funcs}}
- {{range .}}
- {{/* Name is a string - no need for FSet */}}
+ {{range .Funcs}}
+ {{/* Name is a string - no need for FSet */}}
+ {{$name_html := html .Name}}
+ <h2 id="{{$name_html}}">func <a href="/{{posLink_url .Decl $.FSet}}">{{$name_html}}</a></h2>
+ <p><code>{{node_html .Decl $.FSet}}</code></p>
+ {{comment_html .Doc}}
+ {{example_html .Name $.Examples $.FSet}}
+ {{end}}
+ {{range .Types}}
+ {{$tname := printf "%s" .Type.Name}}
+ {{$tname_html := node_html .Type.Name $.FSet}}
+ <h2 id="{{$tname_html}}">type <a href="/{{posLink_url .Decl $.FSet}}">{{$tname_html}}</a></h2>
+ {{comment_html .Doc}}
+ <p><pre>{{node_html .Decl $.FSet}}</pre></p>
+ {{example_html $tname $.Examples $.FSet}}
+ {{range .Consts}}
+ {{comment_html .Doc}}
+ <pre>{{node_html .Decl $.FSet}}</pre>
+ {{end}}
+ {{range .Vars}}
+ {{comment_html .Doc}}
+ <pre>{{node_html .Decl $.FSet}}</pre>
+ {{end}}
+ {{range .Factories}}
{{$name_html := html .Name}}
- <h2 id="{{$name_html}}">func <a href="/{{posLink_url .Decl $.FSet}}">{{$name_html}}</a></h2>
+ <h3 id="{{$name_html}}">func <a href="/{{posLink_url .Decl $.FSet}}">{{$name_html}}</a></h3>
<p><code>{{node_html .Decl $.FSet}}</code></p>
{{comment_html .Doc}}
{{example_html .Name $.Examples $.FSet}}
{{end}}
- {{end}}
- {{with .Types}}
- {{range .}}
- {{$tname := printf "%s" .Type.Name}}
- {{$tname_html := node_html .Type.Name $.FSet}}
- <h2 id="{{$tname_html}}">type <a href="/{{posLink_url .Decl $.FSet}}">{{$tname_html}}</a></h2>
+ {{range .Methods}}
+ {{$name_html := html .Name}}
+ <h3 id="{{$tname_html}}.{{$name_html}}">func ({{node_html .Recv $.FSet}}) <a href="/{{posLink_url .Decl $.FSet}}">{{$name_html}}</a></h3>
+ <p><code>{{node_html .Decl $.FSet}}</code></p>
{{comment_html .Doc}}
- <p><pre>{{node_html .Decl $.FSet}}</pre></p>
- {{example_html $tname $.Examples $.FSet}}
- {{range .Consts}}
- {{comment_html .Doc}}
- <pre>{{node_html .Decl $.FSet}}</pre>
- {{end}}
- {{range .Vars}}
- {{comment_html .Doc}}
- <pre>{{node_html .Decl $.FSet}}</pre>
- {{end}}
- {{range .Factories}}
- {{$name_html := html .Name}}
- <h3 id="{{$name_html}}">func <a href="/{{posLink_url .Decl $.FSet}}">{{$name_html}}</a></h3>
- <p><code>{{node_html .Decl $.FSet}}</code></p>
- {{comment_html .Doc}}
- {{example_html .Name $.Examples $.FSet}}
- {{end}}
- {{range .Methods}}
- {{$name_html := html .Name}}
- <h3 id="{{$tname_html}}.{{$name_html}}">func ({{node_html .Recv $.FSet}}) <a href="/{{posLink_url .Decl $.FSet}}">{{$name_html}}</a></h3>
- <p><code>{{node_html .Decl $.FSet}}</code></p>
- {{comment_html .Doc}}
- {{$name := printf "%s_%s" $tname .Name}}
- {{example_html $name $.Examples $.FSet}}
- {{end}}
+ {{$name := printf "%s_%s" $tname .Name}}
+ {{example_html $name $.Examples $.FSet}}
{{end}}
{{end}}
{{with .Bugs}}