summaryrefslogtreecommitdiff
path: root/src/cmd/godoc/godoc.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/godoc/godoc.go')
-rw-r--r--src/cmd/godoc/godoc.go22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/cmd/godoc/godoc.go b/src/cmd/godoc/godoc.go
index 09b110cab..b590cd297 100644
--- a/src/cmd/godoc/godoc.go
+++ b/src/cmd/godoc/godoc.go
@@ -694,6 +694,14 @@ func timeFmt(w io.Writer, x interface{}, format string) {
}
+// Template formatter for "dir/" format.
+func dirslashFmt(w io.Writer, x interface{}, format string) {
+ if x.(*os.Dir).IsDirectory() {
+ w.Write([]byte{'/'})
+ }
+}
+
+
var fmap = template.FormatterMap{
"": textFmt,
"html": htmlFmt,
@@ -705,6 +713,7 @@ var fmap = template.FormatterMap{
"infoSnippet": infoSnippetFmt,
"padding": paddingFmt,
"time": timeFmt,
+ "dir/": dirslashFmt,
}
@@ -802,6 +811,13 @@ func serveHTMLDoc(c *http.Conn, r *http.Request, path string) {
return
}
+ // if it begins with "<!DOCTYPE " assume it is standalone
+ // html that doesn't need the template wrapping.
+ if bytes.HasPrefix(src, strings.Bytes("<!DOCTYPE ")) {
+ c.Write(src)
+ return
+ }
+
// if it's the language spec, add tags to EBNF productions
if strings.HasSuffix(path, "go_spec.html") {
var buf bytes.Buffer
@@ -917,6 +933,12 @@ func serveDirectory(c *http.Conn, r *http.Request, path string) {
return
}
+ for _, d := range list {
+ if d.IsDirectory() {
+ d.Size = 0
+ }
+ }
+
var buf bytes.Buffer
if err := dirlistHTML.Execute(list, &buf); err != nil {
log.Stderrf("dirlistHTML.Execute: %s", err)