Module Net::IRC::Client::ChannelManager
In: lib/net/irc/client/channel_manager.rb

Methods

Public Instance methods

For managing channel

[Source]

     # File lib/net/irc/client/channel_manager.rb, line 136
136:         def init_channel(channel)
137:                 @channels[channel] ||= {
138:                         :modes => [],
139:                         :users => [],
140:                 }
141:         end

For managing channel

[Source]

    # File lib/net/irc/client/channel_manager.rb, line 86
86:         def on_join(m)
87:                 nick    = m.prefix.nick
88:                 channel = m[0]
89: 
90:                 @channels.synchronize do
91:                         init_channel(channel)
92: 
93:                         @channels[channel][:users] << nick
94:                         @channels[channel][:users].uniq!
95:                 end
96:         end

For managing channel

[Source]

    # File lib/net/irc/client/channel_manager.rb, line 66
66:         def on_kick(m)
67:                 users = m[1].split(",")
68: 
69:                 @channels.synchronize do
70:                         m[0].split(",").each do |chan|
71:                                 init_channel(chan)
72:                                 info = @channels[chan]
73:                                 if info
74:                                         users.each do |nick|
75:                                                 info[:users].delete(nick)
76:                                                 info[:modes].delete_if {|u|
77:                                                         u[1] == nick
78:                                                 }
79:                                         end
80:                                 end
81:                         end
82:                 end
83:         end

For managing channel

[Source]

     # File lib/net/irc/client/channel_manager.rb, line 116
116:         def on_mode(m)
117:                 channel = m[0]
118:                 @channels.synchronize do
119:                         init_channel(channel)
120: 
121:                         modes = @server_config.mode_parser.parse(m)
122:                         modes[:negative].each do |mode|
123:                                 @channels[channel][:modes].delete(mode)
124:                         end
125: 
126:                         modes[:positive].each do |mode|
127:                                 @channels[channel][:modes] << mode
128:                         end
129: 
130:                         @channels[channel][:modes].uniq!
131:                         [modes[:negative], modes[:positive]]
132:                 end
133:         end

For managing channel

[Source]

     # File lib/net/irc/client/channel_manager.rb, line 99
 99:         def on_nick(m)
100:                 oldnick = m.prefix.nick
101:                 newnick = m[0]
102: 
103:                 @channels.synchronize do
104:                         @channels.each do |channel, info|
105:                                 info[:users].map! {|i|
106:                                         (i == oldnick) ? newnick : i
107:                                 }
108:                                 info[:modes].map! {|mode, target|
109:                                         (target == oldnick) ? [mode, newnick] : [mode, target]
110:                                 }
111:                         end
112:                 end
113:         end

For managing channel

[Source]

    # File lib/net/irc/client/channel_manager.rb, line 35
35:         def on_part(m)
36:                 nick    = m.prefix.nick
37:                 channel = m[0]
38:                 init_channel(channel)
39: 
40:                 @channels.synchronize do
41:                         info = @channels[channel]
42:                         if info
43:                                 info[:users].delete(nick)
44:                                 info[:modes].delete_if {|u|
45:                                         u[1] == nick
46:                                 }
47:                         end
48:                 end
49:         end

For managing channel

[Source]

    # File lib/net/irc/client/channel_manager.rb, line 52
52:         def on_quit(m)
53:                 nick = m.prefix.nick
54: 
55:                 @channels.synchronize do
56:                         @channels.each do |channel, info|
57:                                 info[:users].delete(nick)
58:                                 info[:modes].delete_if {|u|
59:                                         u[1] == nick
60:                                 }
61:                         end
62:                 end
63:         end

For managing channel

[Source]

    # File lib/net/irc/client/channel_manager.rb, line 4
 4:         def on_rpl_namreply(m)
 5:                 type    = m[1]
 6:                 channel = m[2]
 7:                 init_channel(channel)
 8: 
 9:                 @channels.synchronize do
10:                         m[3].split(" ").each do |u|
11:                                 _, mode, nick = *u.match(/\A([@+]?)(.+)/)
12: 
13:                                 @channels[channel][:users] << nick
14:                                 @channels[channel][:users].uniq!
15: 
16:                                 op = @server_config.mode_parser.mark_to_op(mode)
17:                                 if op
18:                                         @channels[channel][:modes] << [op, nick]
19:                                 end
20:                         end
21: 
22:                         case type
23:                         when "@" # secret
24:                                 @channels[channel][:modes] << [:s, nil]
25:                         when "*" # private
26:                                 @channels[channel][:modes] << [:p, nil]
27:                         when "=" # public
28:                         end
29: 
30:                         @channels[channel][:modes].uniq!
31:                 end
32:         end

[Validate]