// +build ignore package main import ( "strings" irc "github.com/fluffle/goirc/client" ivy "robpike.io/ivy/mobile" ) type Ivy struct{} 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() } if len(result) > maxLen { conn.Notice(line.Target(), "result too long") } else { for i, s := range strings.Split(result, "\n") { conn.Notice(line.Target(), s) if i > 5 { conn.Notice(line.Target(), "output truncated") return } } } } } func (Ivy) Help() string { return "APL like interpreter. See robpike.io/ivy" } func init() { Register("ivy", &Ivy{}) }