Commit 9d70646f authored by Rob Pike's avatar Rob Pike

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
parent 4b62e8d7
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment