Class | Net::IRC::Message |
In: |
lib/net/irc/message.rb
|
Parent: | Object |
command | [R] | |
params | [R] | |
prefix | [R] |
# File lib/net/irc/message.rb, line 35 35: def initialize(prefix, command, params) 36: @prefix = Prefix.new(prefix.to_s) 37: @command = command 38: @params = params 39: end
Parse string and return new Message. If the string is invalid message, this method raises Net::IRC::Message::InvalidMessage.
# File lib/net/irc/message.rb, line 10 10: def self.parse(str) 11: _, prefix, command, *rest = *PATTERN::MESSAGE_PATTERN.match(str) 12: raise InvalidMessage, "Invalid message: #{str.dump}" unless _ 13: 14: case 15: when rest[0] && !rest[0].empty? 16: middle, trailer, = *rest 17: when rest[2] && !rest[2].empty? 18: middle, trailer, = *rest[2, 2] 19: when rest[1] 20: params = [] 21: trailer = rest[1] 22: when rest[3] 23: params = [] 24: trailer = rest[3] 25: else 26: params = [] 27: end 28: 29: params ||= middle.split(/ /)[1..-1] 30: params << trailer if trailer 31: 32: new(prefix, command, params) 33: end
If the message is CTCP, return true.
# File lib/net/irc/message.rb, line 80 80: def ctcp? 81: #message = @params[1] 82: #message[0] == ?\01 && message[-1] == ?\01 83: /\x01(?>[^\x00\x01\r\n]*)\x01/ === @params[1] 84: end
# File lib/net/irc/message.rb, line 86 86: def ctcps 87: messages = [] 88: @params[1].gsub!(/\x01(?>[^\x00\x01\r\n]*)\x01/) do 89: messages << ctcp_decode($&) 90: "" 91: end 92: messages 93: end
Iterate params.
# File lib/net/irc/message.rb, line 47 47: def each(&block) 48: @params.each(&block) 49: end
# File lib/net/irc/message.rb, line 95 95: def inspect 96: "#<%s:0x%x prefix:%s command:%s params:%s>" % [ 97: self.class, 98: self.object_id, 99: @prefix, 100: @command, 101: @params.inspect 102: ] 103: end
Stringfy message to raw IRC message.
# File lib/net/irc/message.rb, line 52 52: def to_s 53: str = "" 54: 55: str << ":#{@prefix} " unless @prefix.empty? 56: str << @command 57: 58: if @params 59: f = false 60: @params.each do |param| 61: f = !f && (param.empty? || param[0] == ?: || param.include?(" ")) 62: str << " " 63: str << ":" if f 64: str << param 65: end 66: end 67: 68: str << "\x0D\x0A" 69: 70: str 71: end