From 25751e4e0e4a8ef2e62179159fda7e60ff0ebc0b Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 21 Jul 2015 19:09:13 +0200 Subject: Add rudimentary kw rfc search --- rfc.go | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/rfc.go b/rfc.go index a072cc1..7a260bc 100644 --- a/rfc.go +++ b/rfc.go @@ -9,7 +9,27 @@ import ( irc "github.com/fluffle/goirc/client" ) -var rfcMap = make(map[int]rfc.Entry) +type RFC struct{ Command } + +var ( + rfcMap = make(map[int]rfc.Entry) + rfcKW = make(map[string][]string) +) + +func (_ RFC) Timeout() bool { return false } +func (_ RFC) WithArgs(n int) bool { return n == 2 } +func (_ RFC) Handle(conn *irc.Conn, line *irc.Line) { + if f := strings.Fields(line.Text()); len(f) > 1 { + kw := strings.ToLower(f[1]) + log.Println("KW", kw) + if e, ok := rfcKW[kw]; ok { + s := strings.Join(e, ", ") + conn.Privmsg(line.Target(), s) + } else { + conn.Privmsg(line.Target(), "no matches") + } + } +} func ExtractRFC(conn *irc.Conn, line *irc.Line) { for _, v := range strings.Fields(line.Text()) { @@ -36,5 +56,16 @@ func init() { for _, e := range entries { id := e.ID() rfcMap[id] = e + for _, w := range e.Keywords { + for _, f := range strings.Fields(w) { + kw := strings.ToLower(f) + rfcKW[kw] = append(rfcKW[kw], e.DocID) + } + } } + Register("rfc", &RFC{ + Command{ + Help: "search rfc by keyword", + }, + }) } -- cgit v1.2.3