rendered paste body#!/usr/bin/env rubyrequire 'socket'class Network attr_accessor :host attr_accessor :port attr_accessor :socket attr_accessor :user def initialize(host, port, user) @host = host @port = port @user = user end def connect @socket = TCPSocket.new(@host, @port) produce "NICK #{@user.nickname}" produce "USER #{@user.username} #{@user.hostname} #{@user.servername} :#{@user.realname}" end def consume while true results = select([@socket, STDIN], nil, nil) next if !results for result in results[0] if result == $stdin then return if $stdin.eof input = $stdin.gets handle_command(input) elsif result == @socket then return if @socket.eof input = @socket.gets handle_server(input) end end end end def handle_command(input) puts "Console input -> #{input}" end def handle_server(input) puts "Server input -> #{input}" case input.strip when /^PING :(.+)$/i produce "PONG :#{$1}" end end def produce(output) puts "Output to server -> #{output}" @socket.send "#{output}\n", 0 end def die @socket.close endendclass User attr_accessor :nickname attr_accessor :username attr_accessor :hostname attr_accessor :servername attr_accessor :realname def initialize(nickname, username, hostname, servername, realname) @nickname = nickname @username = username @hostname = hostname @servername = servername @realname = realname endendif __FILE__ == $0 iUser = User.new('monkeynut^^', 'monkeynut^^', 'orchid', 'orchid', 'go bananas') iNetwork = Network.new('irc.p2p-network.org', 6667, iUser) iNetwork.connect iNetwork.consume iNetwork.dieend