mirror of https://github.com/golang/go.git
allow godoc to match on regular expressions.
if the name contains a metacharacter, use regexp matching; otherwise require strict equality. now godoc flag '.*Var' can give you all the FooVar functions. R=gri DELTA=19 (19 added, 0 deleted, 0 changed) OCL=27711 CL=27713
This commit is contained in:
parent
4b62e8d7ef
commit
9d70646fcf
|
|
@ -453,8 +453,26 @@ func (doc *DocReader) Doc() *PackageDoc {
|
|||
// ----------------------------------------------------------------------------
|
||||
// Filtering by name
|
||||
|
||||
// Does s look like a regular expression?
|
||||
func isRegexp(s string) bool {
|
||||
metachars := ".(|)*+?^$[]";
|
||||
for i, c := range s {
|
||||
for j, m := range metachars {
|
||||
if c == m {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func match(s string, a []string) bool {
|
||||
for i, t := range a {
|
||||
if isRegexp(t) {
|
||||
if matched, err := regexp.Match(t, s); matched {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if s == t {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -516,6 +534,7 @@ func filterFuncDocs(a []*FuncDoc, names []string) []*FuncDoc {
|
|||
// Filter eliminates information from d that is not
|
||||
// about one of the given names.
|
||||
// TODO: Recognize "Type.Method" as a name.
|
||||
// TODO(r): maybe precompile the regexps.
|
||||
func (p *PackageDoc) Filter(names []string) {
|
||||
p.Consts = filterValueDocs(p.Consts, names);
|
||||
p.Vars = filterValueDocs(p.Vars, names);
|
||||
|
|
|
|||
Loading…
Reference in New Issue