summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-11-06 23:16:33 +0100
committerDimitri Sokolyuk <demon@dim13.org>2015-11-06 23:16:33 +0100
commit0a84458434063327f1d0a27eef4b9d410f151b6e (patch)
treea8cba19e1d73ee68298c9753ffe638fc7e6fa6f7
parentb9f1b9ccb47e6e329ba0ec70edda0cb8cc1e2d8b (diff)
Add ivy
-rw-r--r--ivy.go35
1 files changed, 35 insertions, 0 deletions
diff --git a/ivy.go b/ivy.go
new file mode 100644
index 0000000..dc27a92
--- /dev/null
+++ b/ivy.go
@@ -0,0 +1,35 @@
+package main
+
+import (
+ "strings"
+
+ irc "github.com/fluffle/goirc/client"
+ ivy "robpike.io/ivy/mobile"
+)
+
+type Ivy struct {
+ Command
+}
+
+func (_ Ivy) WithArgs(_ int) bool { return true }
+
+func (_ Ivy) Handle(conn *irc.Conn, line *irc.Line) {
+ switch q := strings.SplitN(line.Text(), " ", 2); len(q) {
+ case 1:
+ ivy.Reset()
+ case 2:
+ result, err := ivy.Eval(q[1])
+ if err != nil {
+ result = err.Error()
+ }
+ conn.Notice(line.Target(), result)
+ }
+}
+
+func (_ Ivy) Help() string {
+ return "interpreter for an APL-like language"
+}
+
+func init() {
+ Register("!", &Ivy{})
+}