summaryrefslogtreecommitdiff
path: root/lib/godoc/package.html
diff options
context:
space:
mode:
Diffstat (limited to 'lib/godoc/package.html')
-rw-r--r--lib/godoc/package.html125
1 files changed, 88 insertions, 37 deletions
diff --git a/lib/godoc/package.html b/lib/godoc/package.html
index 5b7fce8d7..1df1f9151 100644
--- a/lib/godoc/package.html
+++ b/lib/godoc/package.html
@@ -3,25 +3,31 @@
Use of this source code is governed by a BSD-style
license that can be found in the LICENSE file.
-->
+<!--
+ Note: Static (i.e., not template-generated) href and id
+ attributes start with "pkg-" to make it impossible for
+ them to conflict with generated attributes (some of which
+ correspond to Go identifiers).
+-->
{{with .PDoc}}
- {{if $.IsPkg}}
+ {{if not $.IsMain}}
<div id="short-nav">
<dl>
<dd><code>import "{{html .ImportPath}}"</code></dd>
</dl>
<dl>
- <dd><a href="#overview" class="overviewLink">Overview</a></dd>
- <dd><a href="#index">Index</a></dd>
+ <dd><a href="#pkg-overview" class="overviewLink">Overview</a></dd>
+ <dd><a href="#pkg-index" class="indexLink">Index</a></dd>
{{if $.Examples}}
- <dd><a href="#examples">Examples</a></dd>
+ <dd><a href="#pkg-examples" class="examplesLink">Examples</a></dd>
{{end}}
{{if $.Dirs}}
- <dd><a href="#subdirectories">Subdirectories</a></dd>
+ <dd><a href="#pkg-subdirectories">Subdirectories</a></dd>
{{end}}
</dl>
</div>
<!-- The package's Name is printed as title by the top-level template -->
- <div id="overview" class="toggleVisible">
+ <div id="pkg-overview" class="toggleVisible">
<div class="collapsed">
<h2 class="toggleButton" title="Click to show Overview section">Overview ▹</h2>
</div>
@@ -31,16 +37,22 @@
</div>
</div>
{{example_html "" $.Examples $.FSet}}
-
- <h2 id="index">Index</h2>
+
+ <div id="pkg-index" class="toggleVisible">
+ <div class="collapsed">
+ <h2 class="toggleButton" title="Click to show Index section">Index ▹</h2>
+ </div>
+ <div class="expanded">
+ <h2 class="toggleButton" title="Click to hide Index section">Index ▾</h2>
+
<!-- Table of contents for API; must be named manual-nav to turn off auto nav. -->
- <div id="manual-nav">
+ <div id="manual-nav">
<dl>
{{if .Consts}}
- <dd><a href="#constants">Constants</a></dd>
+ <dd><a href="#pkg-constants">Constants</a></dd>
{{end}}
{{if .Vars}}
- <dd><a href="#variables">Variables</a></dd>
+ <dd><a href="#pkg-variables">Variables</a></dd>
{{end}}
{{range .Funcs}}
{{$name_html := html .Name}}
@@ -58,20 +70,25 @@
<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>
+ {{if $.Notes}}
+ {{range $marker, $item := $.Notes}}
+ <dd><a href="#pkg-note-{{$marker}}">{{noteTitle $marker | html}}s</a></dd>
+ {{end}}
{{end}}
- </dl>
+ </dl>
+ </div><!-- #manual-nav -->
{{if $.Examples}}
- <h4 id="examples">Examples</h4>
+ <div id="pkg-examples">
+ <h4>Examples</h4>
<dl>
{{range $.Examples}}
<dd><a class="exampleLink" href="#example_{{.Name}}">{{example_name .Name}}</a></dd>
{{end}}
</dl>
+ </div>
{{end}}
-
+
{{with .Filenames}}
<h4>Package files</h4>
<p>
@@ -82,16 +99,18 @@
</span>
</p>
{{end}}
+ </div><!-- .expanded -->
+ </div><!-- #pkg-index -->
{{with .Consts}}
- <h2 id="constants">Constants</h2>
+ <h2 id="pkg-constants">Constants</h2>
{{range .}}
<pre>{{node_html .Decl $.FSet}}</pre>
{{comment_html .Doc}}
{{end}}
{{end}}
{{with .Vars}}
- <h2 id="variables">Variables</h2>
+ <h2 id="pkg-variables">Variables</h2>
{{range .}}
<pre>{{node_html .Decl $.FSet}}</pre>
{{comment_html .Doc}}
@@ -141,15 +160,16 @@
{{example_html $name $.Examples $.FSet}}
{{end}}
{{end}}
- </div>
{{else}} {{/* not a package; is a command */}}
{{comment_html .Doc}}
{{end}}
- {{with .Bugs}}
- <h2 id="bugs">Bugs</h2>
- {{range .}}
- {{comment_html .}}
+ {{with $.Notes}}
+ {{range $marker, $content := .}}
+ <h2 id="pkg-note-{{$marker}}">{{noteTitle $marker | html}}s</h2>
+ {{range .}}
+ {{comment_html .}}
+ {{end}}
{{end}}
{{end}}
{{end}}
@@ -158,20 +178,10 @@
<pre>{{node_html . $.FSet}}</pre>
{{end}}
-{{with .PList}}
- <h2>Other packages</h2>
- <p>
- {{/* PList entries are strings - no need for FSet */}}
- {{range .}}
- <a href="?p={{urlquery .}}">{{html .}}</a><br />
- {{end}}
- </p>
-{{end}}
-
{{with .Dirs}}
{{/* DirList entries are numbers and strings - no need for FSet */}}
{{if $.PDoc}}
- <h2 id="subdirectories">Subdirectories</h2>
+ <h2 id="pkg-subdirectories">Subdirectories</h2>
{{else}}
<div class="pkgGopher">
<img class="gopher" src="/doc/gopher/pkg.png"/>
@@ -192,14 +202,14 @@
{{if $.DirFlat}}
{{if .HasPkg}}
<tr>
- <td class="name"><a href="{{html .Path}}">{{html .Path}}</a></td>
+ <td class="name"><a href="{{html .Path}}/">{{html .Path}}</a></td>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td style="width: auto">{{html .Synopsis}}</td>
</tr>
{{end}}
{{else}}
<tr>
- <td class="name">{{repeat `&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` .Depth}}<a href="{{html .Path}}">{{html .Name}}</a></td>
+ <td class="name">{{repeat `&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;` .Depth}}<a href="{{html .Path}}/">{{html .Name}}</a></td>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td style="width: auto">{{html .Synopsis}}</td>
</tr>
@@ -207,6 +217,47 @@
{{end}}
</table>
{{if $.PDoc}}{{else}}
- <p>Need more packages? Take a look at the <a href="http://godashboard.appspot.com/">Go Project Dashboard</a>.</p>
+ <p>Need more packages? Take a look at the <a href="http://code.google.com/p/go-wiki/wiki/Projects">Go Projects wiki page</a>.</p>
{{end}}
{{end}}
+
+{{if $.Examples}}
+<script>
+$(document).ready(function() {
+ 'use strict';
+ // Set up playground when each element is toggled.
+ $('div.play').each(function (i, el) {
+ var built = false;
+ $(el).closest('.toggle').click(function() {
+ // Only set up playground once.
+ if (built) {
+ return;
+ }
+ built = true;
+
+ // Set up playground.
+ var code = $('.code', el);
+ playground({
+ 'codeEl': code,
+ 'outputEl': $('.output', el),
+ 'runEl': $('.run', el),
+ 'fmtEl': $('.fmt', el),
+ 'shareEl': $('.share', el),
+ 'shareRedirect': 'http://play.golang.org/p/'
+ });
+
+ // Make the code textarea resize to fit content.
+ var resize = function() {
+ code.height(0);
+ var h = code[0].scrollHeight;
+ code.height(h+20); // minimize bouncing
+ code.closest('.input').height(h);
+ };
+ code.on('keydown', resize);
+ code.on('keyup', resize);
+ code.keyup(); // resize now.
+ });
+ });
+});
+</script>
+{{end}}