Class Net::IRC::Message
In: lib/net/irc/message.rb
Parent: Object

Methods

[]   ctcp?   ctcps   each   inspect   new   parse   to_a   to_s   to_str  

Included Modules

Net::IRC

Classes and Modules

Class Net::IRC::Message::InvalidMessage

Attributes

command  [R] 
params  [R] 
prefix  [R] 

Public Class methods

[Source]

    # 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.

[Source]

    # 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

Public Instance methods

Same as @params[n].

[Source]

    # File lib/net/irc/message.rb, line 42
42:         def [](n)
43:                 @params[n]
44:         end

If the message is CTCP, return true.

[Source]

    # 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

[Source]

    # 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.

[Source]

    # File lib/net/irc/message.rb, line 47
47:         def each(&block)
48:                 @params.each(&block)
49:         end

[Source]

     # 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

Same as params.

[Source]

    # File lib/net/irc/message.rb, line 75
75:         def to_a
76:                 @params.dup
77:         end

Stringfy message to raw IRC message.

[Source]

    # 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
to_str()

Alias for to_s

[Validate]