]> Cypherpunks.ru repositories - gostls13.git/commitdiff
godoc: replace servePage's positional argument list
authorRobert Griesemer <gri@golang.org>
Fri, 30 Mar 2012 17:42:56 +0000 (10:42 -0700)
committerRobert Griesemer <gri@golang.org>
Fri, 30 Mar 2012 17:42:56 +0000 (10:42 -0700)
R=golang-dev, adg, bradfitz
CC=golang-dev
https://golang.org/cl/5869050

lib/godoc/godoc.html
src/cmd/godoc/codewalk.go
src/cmd/godoc/godoc.go
src/cmd/godoc/main.go

index fd60329273807ba2541d1fbd8a684df427e5627c..5330b17d4b9f77499f3908258f24541677698384 100644 (file)
@@ -45,8 +45,8 @@
      Do not delete this <div>. */}}
 <div id="nav"></div>
 
-{{/* Content is HTML-escaped elsewhere */}}
-{{printf "%s" .Content}}
+{{/* Body is HTML-escaped elsewhere */}}
+{{printf "%s" .Body}}
 
 </div>
 
index f7f51d0a028451cd3bec31265d07e944ccb11b5a..e68c0fa6ba3dc29176146f757c7a2baeaf5771f3 100644 (file)
@@ -68,8 +68,11 @@ func codewalk(w http.ResponseWriter, r *http.Request) {
                return
        }
 
-       b := applyTemplate(codewalkHTML, "codewalk", cw)
-       servePage(w, cw.Title, "Codewalk: "+cw.Title, "", "", b)
+       servePage(w, Page{
+               Title:    "Codewalk: " + cw.Title,
+               Tabtitle: cw.Title,
+               Body:     applyTemplate(codewalkHTML, "codewalk", cw),
+       })
 }
 
 // A Codewalk represents a single codewalk read from an XML file.
@@ -199,8 +202,10 @@ func codewalkDir(w http.ResponseWriter, r *http.Request, relpath, abspath string
                }
        }
 
-       b := applyTemplate(codewalkdirHTML, "codewalkdir", v)
-       servePage(w, "", "Codewalks", "", "", b)
+       servePage(w, Page{
+               Title: "Codewalks",
+               Body:  applyTemplate(codewalkdirHTML, "codewalkdir", v),
+       })
 }
 
 // codewalkFileprint serves requests with ?fileprint=f&lo=lo&hi=hi.
index f6dc678b49d4b3159ea92126ae9f5587faa47646..c3a6c0f16af7e10680a2788ca6d694dcb245d0a0 100644 (file)
@@ -538,31 +538,26 @@ func readTemplates() {
 // ----------------------------------------------------------------------------
 // Generic HTML wrapper
 
-func servePage(w http.ResponseWriter, tabtitle, title, subtitle, query string, content []byte) {
-       if tabtitle == "" {
-               tabtitle = title
-       }
-       d := struct {
-               Tabtitle  string
-               Title     string
-               Subtitle  string
-               SearchBox bool
-               Query     string
-               Version   string
-               Menu      []byte
-               Content   []byte
-       }{
-               tabtitle,
-               title,
-               subtitle,
-               *indexEnabled,
-               query,
-               runtime.Version(),
-               nil,
-               content,
-       }
-
-       if err := godocHTML.Execute(w, &d); err != nil {
+// Page describes the contents of the top-level godoc webpage.
+type Page struct {
+       Title    string
+       Tabtitle string
+       Subtitle string
+       Query    string
+       Body     []byte
+
+       // filled in by servePage
+       SearchBox bool
+       Version   string
+}
+
+func servePage(w http.ResponseWriter, page Page) {
+       if page.Tabtitle == "" {
+               page.Tabtitle = page.Title
+       }
+       page.SearchBox = *indexEnabled
+       page.Version = runtime.Version()
+       if err := godocHTML.Execute(w, page); err != nil {
                log.Printf("godocHTML.Execute: %s", err)
        }
 }
@@ -627,7 +622,11 @@ func serveHTMLDoc(w http.ResponseWriter, r *http.Request, abspath, relpath strin
                src = buf.Bytes()
        }
 
-       servePage(w, "", meta.Title, meta.Subtitle, "", src)
+       servePage(w, Page{
+               Title:    meta.Title,
+               Subtitle: meta.Subtitle,
+               Body:     src,
+       })
 }
 
 func applyTemplate(t *template.Template, name string, data interface{}) []byte {
@@ -663,7 +662,11 @@ func serveTextFile(w http.ResponseWriter, r *http.Request, abspath, relpath, tit
        FormatText(&buf, src, 1, pathpkg.Ext(abspath) == ".go", r.FormValue("h"), rangeSelection(r.FormValue("s")))
        buf.WriteString("</pre>")
 
-       servePage(w, relpath, title+" "+relpath, "", "", buf.Bytes())
+       servePage(w, Page{
+               Title:    title + " " + relpath,
+               Tabtitle: relpath,
+               Body:     buf.Bytes(),
+       })
 }
 
 func serveDirectory(w http.ResponseWriter, r *http.Request, abspath, relpath string) {
@@ -677,8 +680,11 @@ func serveDirectory(w http.ResponseWriter, r *http.Request, abspath, relpath str
                return
        }
 
-       contents := applyTemplate(dirlistHTML, "dirlistHTML", list)
-       servePage(w, relpath, "Directory "+relpath, "", "", contents)
+       servePage(w, Page{
+               Title:    "Directory " + relpath,
+               Tabtitle: relpath,
+               Body:     applyTemplate(dirlistHTML, "dirlistHTML", list),
+       })
 }
 
 func serveFile(w http.ResponseWriter, r *http.Request) {
@@ -1065,8 +1071,7 @@ func (h *docServer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
        }
 
        if mode&noHtml != 0 {
-               contents := applyTemplate(packageText, "packageText", info)
-               serveText(w, contents)
+               serveText(w, applyTemplate(packageText, "packageText", info))
                return
        }
 
@@ -1103,8 +1108,12 @@ func (h *docServer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
                tabtitle = "Commands"
        }
 
-       contents := applyTemplate(packageHTML, "packageHTML", info)
-       servePage(w, tabtitle, title, subtitle, "", contents)
+       servePage(w, Page{
+               Title:    title,
+               Tabtitle: tabtitle,
+               Subtitle: subtitle,
+               Body:     applyTemplate(packageHTML, "packageHTML", info),
+       })
 }
 
 // ----------------------------------------------------------------------------
@@ -1181,8 +1190,7 @@ func search(w http.ResponseWriter, r *http.Request) {
        result := lookup(query)
 
        if getPageInfoMode(r)&noHtml != 0 {
-               contents := applyTemplate(searchText, "searchText", result)
-               serveText(w, contents)
+               serveText(w, applyTemplate(searchText, "searchText", result))
                return
        }
 
@@ -1193,8 +1201,12 @@ func search(w http.ResponseWriter, r *http.Request) {
                title = fmt.Sprintf(`No results found for query %q`, query)
        }
 
-       contents := applyTemplate(searchHTML, "searchHTML", result)
-       servePage(w, query, title, "", query, contents)
+       servePage(w, Page{
+               Title:    title,
+               Tabtitle: query,
+               Query:    query,
+               Body:     applyTemplate(searchHTML, "searchHTML", result),
+       })
 }
 
 // ----------------------------------------------------------------------------
index da4fc63b5f8ba129219acfc41e2338128cc06762..cb6e0530b92ffb2e8739769332d4dca7578d6a81 100644 (file)
@@ -71,9 +71,12 @@ var (
 )
 
 func serveError(w http.ResponseWriter, r *http.Request, relpath string, err error) {
-       contents := applyTemplate(errorHTML, "errorHTML", err) // err may contain an absolute path!
        w.WriteHeader(http.StatusNotFound)
-       servePage(w, relpath, "File "+relpath, "", "", contents)
+       servePage(w, Page{
+               Title:    "File " + relpath,
+               Subtitle: relpath,
+               Body:     applyTemplate(errorHTML, "errorHTML", err), // err may contain an absolute path!
+       })
 }
 
 func usage() {