mirror of
https://github.com/golang/go
synced 2024-11-02 09:03:03 +00:00
godoc: don't show directories w/o packages in flat dir mode
The main change is simple: Both the Directory and DirEntry struct have an extra field 'HasPkg' indicating whether the directory contains any package files. The remaining changes are more comments and adjustments to the template files. Fixes #3121. R=golang-dev, bradfitz, sameer CC=golang-dev https://golang.org/cl/5699072
This commit is contained in:
parent
0706d00cb8
commit
ab169c6e3f
3 changed files with 44 additions and 24 deletions
|
@ -167,21 +167,27 @@
|
|||
<th> </th>
|
||||
<th style="text-align: left; width: auto">Synopsis</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="..">..</a></td>
|
||||
</tr>
|
||||
{{if not $.DirFlat}}
|
||||
<tr>
|
||||
<td><a href="..">..</a></td>
|
||||
</tr>
|
||||
{{end}}
|
||||
{{range .List}}
|
||||
<tr>
|
||||
<td>
|
||||
{{if $.DirFlat}}
|
||||
<a href="{{html .Path}}">{{html .Path}}</a>
|
||||
{{if .HasPkg}}
|
||||
<tr>
|
||||
<td><a href="{{html .Path}}">{{html .Path}}</a></td>
|
||||
<td> </td>
|
||||
<td style="width: auto">{{html .Synopsis}}</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
{{else}}
|
||||
{{repeat ` ` .Depth}}<a href="{{html .Path}}">{{html .Name}}</a>
|
||||
<tr>
|
||||
<td>{{repeat ` ` .Depth}}<a href="{{html .Path}}">{{html .Name}}</a></td>
|
||||
<td> </td>
|
||||
<td style="width: auto">{{html .Synopsis}}</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
</td>
|
||||
<td> </td>
|
||||
<td style="width: auto">{{html .Synopsis}}</td>
|
||||
</tr>
|
||||
{{end}}
|
||||
</table>
|
||||
{{end}}
|
||||
|
|
|
@ -76,8 +76,8 @@ OTHER PACKAGES
|
|||
|
||||
*/}}{{with .Dirs}}
|
||||
SUBDIRECTORIES
|
||||
{{if $.DirFlat}}{{range .List}}
|
||||
{{.Path}}{{end}}
|
||||
{{if $.DirFlat}}{{range .List}}{{if .HasPkg}}
|
||||
{{.Path}}{{end}}{{end}}
|
||||
{{else}}{{range .List}}
|
||||
{{repeat `. ` .Depth}}{{.Name}}{{end}}
|
||||
{{end}}{{end}}
|
||||
|
|
|
@ -23,11 +23,12 @@ import (
|
|||
const testdataDirName = "testdata"
|
||||
|
||||
type Directory struct {
|
||||
Depth int
|
||||
Path string // includes Name
|
||||
Name string
|
||||
Text string // package documentation, if any
|
||||
Dirs []*Directory // subdirectories
|
||||
Depth int
|
||||
Path string // directory path; includes Name
|
||||
Name string // directory name
|
||||
HasPkg bool // true if the directory contains at least one package
|
||||
Synopsis string // package documentation, if any
|
||||
Dirs []*Directory // subdirectories
|
||||
}
|
||||
|
||||
func isGoFile(fi os.FileInfo) bool {
|
||||
|
@ -62,7 +63,11 @@ func (b *treeBuilder) newDirTree(fset *token.FileSet, path, name string, depth i
|
|||
// return a dummy directory so that the parent directory
|
||||
// doesn't get discarded just because we reached the max
|
||||
// directory depth
|
||||
return &Directory{depth, path, name, "", nil}
|
||||
return &Directory{
|
||||
Depth: depth,
|
||||
Path: path,
|
||||
Name: name,
|
||||
}
|
||||
}
|
||||
|
||||
list, err := fs.ReadDir(path)
|
||||
|
@ -145,7 +150,14 @@ func (b *treeBuilder) newDirTree(fset *token.FileSet, path, name string, depth i
|
|||
}
|
||||
}
|
||||
|
||||
return &Directory{depth, path, name, synopsis, dirs}
|
||||
return &Directory{
|
||||
Depth: depth,
|
||||
Path: path,
|
||||
Name: name,
|
||||
HasPkg: hasPkgFiles,
|
||||
Synopsis: synopsis,
|
||||
Dirs: dirs,
|
||||
}
|
||||
}
|
||||
|
||||
// newDirectory creates a new package directory tree with at most maxDepth
|
||||
|
@ -247,9 +259,10 @@ func (dir *Directory) lookup(path string) *Directory {
|
|||
type DirEntry struct {
|
||||
Depth int // >= 0
|
||||
Height int // = DirList.MaxHeight - Depth, > 0
|
||||
Path string // includes Name, relative to DirList root
|
||||
Name string
|
||||
Synopsis string
|
||||
Path string // directory path; includes Name, relative to DirList root
|
||||
Name string // directory name
|
||||
HasPkg bool // true if the directory contains at least one package
|
||||
Synopsis string // package documentation, if any
|
||||
}
|
||||
|
||||
type DirList struct {
|
||||
|
@ -304,7 +317,8 @@ func (root *Directory) listing(skipRoot bool) *DirList {
|
|||
}
|
||||
p.Path = path
|
||||
p.Name = d.Name
|
||||
p.Synopsis = d.Text
|
||||
p.HasPkg = d.HasPkg
|
||||
p.Synopsis = d.Synopsis
|
||||
i++
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue