summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-07-21 19:09:13 +0200
committerDimitri Sokolyuk <demon@dim13.org>2015-07-21 19:09:13 +0200
commit25751e4e0e4a8ef2e62179159fda7e60ff0ebc0b (patch)
tree527a62ddbbbcf6b3e8fbe25ed4fa12a29c124f8c
parent22e78b68a30c280b558de12db7b44c556d8fe40b (diff)
Add rudimentary kw rfc search
-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",
+ },
+ })
}