shithub: irc.myr

Download patch

ref: 5834a0996b3baa16e9773354cf9b333057079b9e
parent: 229f4548e2b2a652a6752158479bea49fdd8a0e8
author: Ori Bernstein <ori@eigenstate.org>
date: Mon Nov 6 18:24:32 EST 2017

Update to latest libtermdraw.

--- a/irc.myr
+++ b/irc.myr
@@ -140,6 +140,7 @@
 		| "PRIVMSG":	recievemsg(cli, srv, src, args)
 		| "PING":	send(cli, srv, "PONG :{}\r\n", args[0])
 		| "JOIN":	joined(cli, srv, src, args)
+		| "NICK":	renamed(cli, srv, src, args)
 		| c:	
 			status(cli, cli.self, "unknown server command {}", ln)
 		;;
@@ -148,15 +149,20 @@
 	;;
 }
 
+const renamed = {cli, srv, src, args
+	if args.len > 0
+		for c : srv.chan
+			status(cli, c, "changed nick: {} => {}", displayname(src), displayname(args[0]))
+		;;
+	;;
+}
+
 const joined = {cli, srv, src, args
 	var c, name
 
 	if args.len == 1
 		c = name2chan(cli, srv, args[0])
-		match std.strfind(src, "!")
-		| `std.Some i:	name = src[:i]
-		| `std.None:	name = src
-		;;
+		name = displayname(src)
 		match std.lsearch(c.users, name, std.strcmp)
 		| `std.None:	std.slpush(&c.users, std.sldup(name))
 		| `std.Some _:	/* ignore */
@@ -246,6 +252,14 @@
 	;;
 }
 
+
+const displayname = {src
+	match std.strfind(src, "!")
+	| `std.Some i:	-> src[:i]
+	| `std.None:	-> src
+	;;
+}
+
 const mkclient = {
 	var cli, home, path, t
 	var nick, user
@@ -628,7 +642,7 @@
 		| `std.None:
 			break
 		| `std.Some `termdraw.Winsz _:
-
+			/* nothing */
 		| `std.Some `termdraw.Kc '\n':
 			do(cli, cli.input)
 			done(cli)
--