Class: Net::IRC::Message

Net::IRC::Message (Class)

In files
lib/net/irc/message.rb
Parent
Object

Included Modules

Attributes

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

Public Class methods

    # 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

Public Instance methods

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

Alias for to_s