new object $login_interface: $has_commands; var $root inited = 1; var $has_commands shortcuts = #[]; var $has_commands commands = #[["co", 'connect_cmd], ["connect", 'connect_cmd], ["guest", 'connect_guest_cmd], ["co-guest", 'connect_guest_cmd], ["connect-guest", 'connect_guest_cmd]]; public method .new_connection() { sender().write("\"connect-guest [your name] [your email]\" to connect."); }; public method .parse_line() { arg line; var cmd, ret; if ((cmd = .match_command(line))) { catch any { ret = .(cmd[1])(sender(), line, cmd[2], @(cmd[3].explode())); } with { switch (error()) { case ~numargs: return "Wrong number of arguments."; default: .log($parse_lib.traceback(traceback())); } } return ret; } else { return "No such command."; } }; protected method .connect_cmd() { arg conn, cmdstr, cmd, username, password; var new; // This is called when a user connects new = $user.spawn(); new.init(conn, username); return ['interface, new]; }; protected method .connect_guest_cmd() { arg conn, cmdstr, cmd, username, email; new = $user.spawn(); new.set_name(conn, username); return ['interface, new]; };