summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rfc.go33
1 files changed, 32 insertions, 1 deletions
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",
+ },
+ })
}