diff options
Diffstat (limited to 'src/cmd/godoc/godoc.go')
-rw-r--r-- | src/cmd/godoc/godoc.go | 22 |
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) |