Net::IRC::Message (Class)
# 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
Same as @params[n].
# File lib/net/irc/message.rb, line 42
42: def [](n)
43: @params[n]
44: end
If the message is CTCP, return true.
# File lib/net/irc/message.rb, line 83
83: def ctcp?
84: message = @params[1]
85: message[0] == 1 && message[message.length-1] == 1
86: 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 88
88: def inspect
89: '#<%s:0x%x prefix:%s command:%s params:%s>' % [
90: self.class,
91: self.object_id,
92: @prefix,
93: @command,
94: @params.inspect
95: ]
96: end
Same as params.
# File lib/net/irc/message.rb, line 78
78: def to_a
79: @params.dup
80: 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: str << " "
62: if !f && (param.size == 0 || / / =~ param || /^:/ =~ param)
63: str << ":#{param}"
64: f = true
65: else
66: str << param
67: end
68: end
69: end
70:
71: str << "\x0D\x0A"
72:
73: str
74: end