diff options
author | Robert Griesemer <gri@golang.org> | 2011-01-19 12:48:10 -0800 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2011-01-19 12:48:10 -0800 |
commit | 4e3f38947650dcaf5a764e49c11bad3b1070de73 (patch) | |
tree | bdbf7cced489c631a823c42bffa1017cb38b97e0 | |
parent | c52ad23461953a8017199fe0a6fa78ba486ec2ef (diff) | |
download | go-4e3f38947650dcaf5a764e49c11bad3b1070de73.tar.gz go-4e3f38947650dcaf5a764e49c11bad3b1070de73.zip |
godoc: enable qualified identifiers ("math.Sin") as query strings again
A query string of the form ident.ident will be used both as a qualified
identifier for identifier search and as a regular expression.
Qualified identifier lookup got broken accidentally when introducing
regexp full text search. Cleaned up surrounding logic a bit.
R=rsc
CC=golang-dev
https://golang.org/cl/3984042
-rw-r--r-- | src/cmd/godoc/godoc.go | 41 |
1 files changed, 19 insertions, 22 deletions
diff --git a/src/cmd/godoc/godoc.go b/src/cmd/godoc/godoc.go index 0fb9f5324c..c53e04eba9 100644 --- a/src/cmd/godoc/godoc.go +++ b/src/cmd/godoc/godoc.go @@ -1159,36 +1159,33 @@ type SearchResult struct { func lookup(query string) (result SearchResult) { result.Query = query - // determine identifier lookup string and full text regexp - lookupStr := "" - lookupRx, err := regexp.Compile(query) - if err != nil { - result.Alert = "Error in query regular expression: " + err.String() - return - } - if prefix, complete := lookupRx.LiteralPrefix(); complete { - // otherwise we lookup "" (with no result) because - // identifier lookup doesn't support regexp search - lookupStr = prefix - } - index, timestamp := searchIndex.get() if index != nil { - // identifier search index := index.(*Index) - result.Hit, result.Alt, err = index.Lookup(lookupStr) + + // identifier search + var err os.Error + result.Hit, result.Alt, err = index.Lookup(query) if err != nil && !*fulltextIndex { - // ignore the error if there is full text search - // since it accepts that query regular expression + // ignore the error if full text search is enabled + // since the query may be a valid regular expression result.Alert = "Error in query string: " + err.String() return } - // textual search - // TODO(gri) should max be a flag? - const max = 10000 // show at most this many fulltext results - result.Found, result.Textual = index.LookupRegexp(lookupRx, max+1) - result.Complete = result.Found <= max + // full text search + if *fulltextIndex { + rx, err := regexp.Compile(query) + if err != nil { + result.Alert = "Error in query regular expression: " + err.String() + return + } + + // TODO(gri) should max be a flag? + const max = 10000 // show at most this many fulltext results + result.Found, result.Textual = index.LookupRegexp(rx, max+1) + result.Complete = result.Found <= max + } } // is the result accurate? |