net-yail 1.6.0 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/examples/simple/dumbbot.rb +8 -4
- data/examples/simple/whois.rb +52 -0
- data/lib/net/yail.rb +5 -2
- data/lib/net/yail/default_events.rb +6 -6
- data/lib/net/yail/irc_bot.rb +4 -3
- data/lib/net/yail/legacy_events.rb +1 -1
- data/lib/net/yail/magic_events.rb +3 -3
- data/lib/net/yail/report_events.rb +28 -28
- data/lib/net/yail/yail-version.rb +1 -1
- data/tests/tc_yail.rb +23 -8
- metadata +38 -50
data/examples/simple/dumbbot.rb
CHANGED
@@ -10,15 +10,19 @@ require 'getopt/long'
|
|
10
10
|
opt = Getopt::Long.getopts(
|
11
11
|
['--network', Getopt::REQUIRED],
|
12
12
|
['--nick', Getopt::REQUIRED],
|
13
|
+
['--port', Getopt::REQUIRED],
|
13
14
|
['--loud', Getopt::BOOLEAN]
|
14
15
|
)
|
15
16
|
|
16
|
-
|
17
|
+
opts = {
|
17
18
|
:address => opt['network'],
|
18
|
-
:username => '
|
19
|
+
:username => 'FrakkingBot',
|
19
20
|
:realname => 'John Botfrakker',
|
20
|
-
:nicknames => [opt['nick']]
|
21
|
-
|
21
|
+
:nicknames => [opt['nick']],
|
22
|
+
}
|
23
|
+
opts[:port] = opt['port'] if opt['port']
|
24
|
+
|
25
|
+
irc = Net::YAIL.new(opts)
|
22
26
|
|
23
27
|
irc.log.level = Logger::DEBUG if opt['loud']
|
24
28
|
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
# Want a specific version of net/yail? Try uncommenting this:
|
4
|
+
# gem 'net-yail', '1.x.y'
|
5
|
+
|
6
|
+
require 'net/yail'
|
7
|
+
require 'getopt/long'
|
8
|
+
|
9
|
+
# User specifies channel and nick
|
10
|
+
opt = Getopt::Long.getopts(
|
11
|
+
['--network', Getopt::REQUIRED],
|
12
|
+
['--nick', Getopt::REQUIRED],
|
13
|
+
['--port', Getopt::REQUIRED],
|
14
|
+
['--loud', Getopt::BOOLEAN]
|
15
|
+
)
|
16
|
+
|
17
|
+
opts = {
|
18
|
+
:address => opt['network'],
|
19
|
+
:username => 'FrakkingBot',
|
20
|
+
:realname => 'John Botfrakker',
|
21
|
+
:nicknames => [opt['nick']],
|
22
|
+
}
|
23
|
+
opts[:port] = opt['port'] if opt['port']
|
24
|
+
|
25
|
+
irc = Net::YAIL.new(opts)
|
26
|
+
|
27
|
+
irc.log.level = Logger::DEBUG if opt['loud']
|
28
|
+
|
29
|
+
# Register handlers
|
30
|
+
irc.heard_welcome { |e| irc.join('#bots') } # Filter - runs after the server's welcome message is read
|
31
|
+
irc.on_invite { |e| irc.join(e.channel) } # Handler - runs on an invite message
|
32
|
+
|
33
|
+
# WHOIS example (this could be useful for other numerics as well)
|
34
|
+
data = {}
|
35
|
+
irc.heard_join do |e|
|
36
|
+
data = {:nick => e.nick}
|
37
|
+
irc.whois(e.nick)
|
38
|
+
end
|
39
|
+
irc.heard_whoisuser do |e|
|
40
|
+
data[:name] = e.parameters[4]
|
41
|
+
data[:host] = e.parameters[2]
|
42
|
+
end
|
43
|
+
irc.heard_whoischannels do |e|
|
44
|
+
data[:channels] = e.parameters.last
|
45
|
+
end
|
46
|
+
irc.heard_endofwhois do |e|
|
47
|
+
irc.msg(data[:nick], "I know who you are, #{data[:nick]}")
|
48
|
+
irc.msg(data[:nick], data.inspect)
|
49
|
+
end
|
50
|
+
|
51
|
+
# Start the bot and enjoy the endless loop
|
52
|
+
irc.start_listening!
|
data/lib/net/yail.rb
CHANGED
@@ -245,6 +245,7 @@ module Net
|
|
245
245
|
# If <tt>server</tt> is present, the request is forwarded to the given server.
|
246
246
|
# * <tt>invite(nick, channel)</tt>: Invites a user to the given channel.
|
247
247
|
# * <tt>kick(nick, channel, [message])</tt>: "KICK :channel :nick", :nick, :channel, :reason, " ::reason"
|
248
|
+
# * <tt>whois(nick, [server]): Issues a WHOIS command for the given nickname with an optional server.
|
248
249
|
#
|
249
250
|
# =Simple Example
|
250
251
|
#
|
@@ -380,7 +381,7 @@ class YAIL
|
|
380
381
|
@log = options[:log]
|
381
382
|
else
|
382
383
|
@log = Logger.new(options[:log_io] || STDERR)
|
383
|
-
@log.level = Logger::
|
384
|
+
@log.level = Logger::INFO
|
384
385
|
|
385
386
|
if (options[:silent] || options[:loud])
|
386
387
|
@log.warn '[DEPRECATED] - passing :silent and :loud options to constructor are deprecated as of 1.4.1'
|
@@ -496,6 +497,7 @@ class YAIL
|
|
496
497
|
set_callback :outgoing_act, self.method(:magic_out_act)
|
497
498
|
|
498
499
|
# WHOIS is tricky due to how weird its argument positioning is, so can't use create_command, either
|
500
|
+
set_callback :outgoing_whois, self.method(:magic_out_whois)
|
499
501
|
|
500
502
|
# All PRIVMSG events eventually hit this - it's a legacy thing, and kinda dumb, but there you
|
501
503
|
# have it. Just sends a raw PRIVMSG out to the socket.
|
@@ -720,7 +722,8 @@ class YAIL
|
|
720
722
|
# Reports may not get printed in the proper order since I scrubbed the
|
721
723
|
# IRCSocket report capturing, but this is way more straightforward to me.
|
722
724
|
def report(*lines)
|
723
|
-
|
725
|
+
@log.warn '[DEPRECATED] - Net::YAIL#report is deprecated and will be removed in 2.0 - use the logger (e.g., "@irc.log.info") instead'
|
726
|
+
lines.each {|line| @log.info line}
|
724
727
|
end
|
725
728
|
|
726
729
|
# Converts events that are numerics into the internal "incoming_numeric_xxx" format
|
@@ -10,13 +10,13 @@ module Defaults
|
|
10
10
|
# quitting may be fine, but for something else, we may want to prompt a
|
11
11
|
# user or try again in 20 minutes or something. Note that we only fail
|
12
12
|
# when the adapter hasn't gotten logged in yet - an attempt at changing
|
13
|
-
# nick after registration (welcome message) just generates a
|
13
|
+
# nick after registration (welcome message) just generates a log message.
|
14
14
|
#
|
15
15
|
# TODO: This should really not even be here. Client should have full control over whether or not
|
16
16
|
# they want this. Base IRC bot class should have this, but not the core YAIL lib.
|
17
17
|
def _nicknameinuse(event)
|
18
18
|
event.message =~ /^(\S+)/
|
19
|
-
|
19
|
+
@log.warn "Nickname #{$1} is already in use."
|
20
20
|
|
21
21
|
if (!@registered)
|
22
22
|
begin
|
@@ -24,11 +24,11 @@ module Defaults
|
|
24
24
|
if (nextnick != nil)
|
25
25
|
nick nextnick
|
26
26
|
else
|
27
|
-
|
27
|
+
@log.error '*** All nicknames in use. ***'
|
28
28
|
raise ArgumentError.new("All nicknames in use")
|
29
29
|
end
|
30
30
|
rescue
|
31
|
-
|
31
|
+
@log.error '*** Nickname selection error. ***'
|
32
32
|
raise
|
33
33
|
end
|
34
34
|
end
|
@@ -40,10 +40,10 @@ module Defaults
|
|
40
40
|
def _namreply(event)
|
41
41
|
event.message =~ /^(@|\*|=) (\S+) :?(.+)$/
|
42
42
|
channeltype = {'@' => 'Secret', '*' => 'Private', '=' => 'Normal'}[$1]
|
43
|
-
|
43
|
+
@log.info "{#{$2}} #{channeltype} channel nickname list: #{$3}"
|
44
44
|
@nicklist = $3.split(' ')
|
45
45
|
@nicklist.collect!{|name| name.sub(/^\W*/, '')}
|
46
|
-
|
46
|
+
@log.info "First nick: #{@nicklist[0]}"
|
47
47
|
end
|
48
48
|
|
49
49
|
end
|
data/lib/net/yail/irc_bot.rb
CHANGED
@@ -144,9 +144,10 @@ class IRCBot
|
|
144
144
|
@irc.join(*args)
|
145
145
|
end
|
146
146
|
|
147
|
-
#
|
148
|
-
def report(*
|
149
|
-
@
|
147
|
+
# Logs the requested lines using the internal logger - deprecated to push logger on people
|
148
|
+
def report(*lines)
|
149
|
+
@log.warn '[DEPRECATED] - IRCBot#report is deprecated and will be removed in 2.0 - use the logger (e.g., "@bot.log.info") instead'
|
150
|
+
lines.each {|line| @irc.log.info line}
|
150
151
|
end
|
151
152
|
|
152
153
|
# Wraps Net::YAIL.nick
|
@@ -189,7 +189,7 @@ module LegacyEvents
|
|
189
189
|
return handle(event.type, event.nick, event.channel)
|
190
190
|
|
191
191
|
when :outgoing_kick
|
192
|
-
return handle(event.type, event.nick, event.channel, event.
|
192
|
+
return handle(event.type, event.nick, event.channel, event.message)
|
193
193
|
|
194
194
|
when :outgoing_begin_connection
|
195
195
|
return handle(event.type, event.username, event.address, event.realname)
|
@@ -18,8 +18,7 @@ module Magic
|
|
18
18
|
# We were welcomed, so we need to set up initial nickname and set that we
|
19
19
|
# registered so nick change failure doesn't cause DEATH!
|
20
20
|
def magic_welcome(event)
|
21
|
-
#
|
22
|
-
report "#{event.from} welcome message: #{event.message}"
|
21
|
+
@log.info "#{event.from} welcome message: #{event.message}"
|
23
22
|
if (event.message =~ /(\S+)!\S+$/)
|
24
23
|
@me = $1
|
25
24
|
elsif (event.message =~ /(\S+)$/)
|
@@ -55,7 +54,8 @@ module Magic
|
|
55
54
|
|
56
55
|
# WHOIS - here because first parameter might be the nick and might be the optional server
|
57
56
|
def magic_out_whois(event)
|
58
|
-
|
57
|
+
string = "WHOIS %s%s" % [event.server.to_s.empty? ? "" : event.server, event.nick]
|
58
|
+
raw string
|
59
59
|
end
|
60
60
|
|
61
61
|
end
|
@@ -35,137 +35,137 @@ module Reports
|
|
35
35
|
|
36
36
|
private
|
37
37
|
def r_msg(event)
|
38
|
-
|
38
|
+
@yail.log.info "{%s} <%s> %s" % [event.target || event.channel, event.nick, event.message]
|
39
39
|
end
|
40
40
|
|
41
41
|
def r_act(event)
|
42
|
-
|
42
|
+
@yail.log.info "{%s} * %s %s" % [event.target || event.channel, event.nick, event.message]
|
43
43
|
end
|
44
44
|
|
45
45
|
def r_notice(event)
|
46
46
|
nick = event.server? ? '' : event.nick
|
47
|
-
|
47
|
+
@yail.log.info "{%s} -%s- %s" % [event.target || event.channel, nick, event.message]
|
48
48
|
end
|
49
49
|
|
50
50
|
def r_ctcp(event)
|
51
|
-
|
51
|
+
@yail.log.info "{%s} [%s %s]" % [event.target || event.channel, event.nick, event.message]
|
52
52
|
end
|
53
53
|
|
54
54
|
def r_ctcpreply(event)
|
55
|
-
|
55
|
+
@yail.log.info "{%s} [Reply: %s %s]" % [event.target || event.channel, event.nick, event.message]
|
56
56
|
end
|
57
57
|
|
58
58
|
def r_mode(event)
|
59
|
-
|
59
|
+
@yail.log.info "{%s} %s sets mode %s %s" % [event.channel, event.from, event.message, event.targets.join(' ')]
|
60
60
|
end
|
61
61
|
|
62
62
|
def r_join(event)
|
63
|
-
|
63
|
+
@yail.log.info "{#{event.channel}} #{event.nick} joins"
|
64
64
|
end
|
65
65
|
|
66
66
|
def r_part(event)
|
67
|
-
|
67
|
+
@yail.log.info "{#{event.channel}} #{event.nick} parts (#{event.message})"
|
68
68
|
end
|
69
69
|
|
70
70
|
def r_kick(event)
|
71
|
-
|
71
|
+
@yail.log.info "{#{event.channel}} #{event.nick} kicked #{event.target} (#{event.message})"
|
72
72
|
end
|
73
73
|
|
74
74
|
def r_quit(event)
|
75
|
-
|
75
|
+
@yail.log.info "#{event.nick} quit (#{event.message})"
|
76
76
|
end
|
77
77
|
|
78
78
|
# Incoming invitation
|
79
79
|
def r_invite(event)
|
80
|
-
|
80
|
+
@yail.log.info "[#{event.nick}] INVITE to #{event.target}"
|
81
81
|
end
|
82
82
|
|
83
83
|
# Reports nick change unless nickname is us - we check nickname here since
|
84
84
|
# the magic method changes @yail.me to the new nickname.
|
85
85
|
def r_nick(event)
|
86
|
-
|
86
|
+
@yail.log.info "#{event.nick} changed nick to #{event.message}" unless event.nick == @yail.me
|
87
87
|
end
|
88
88
|
|
89
89
|
def r_bannedfromchan(event)
|
90
90
|
event.message =~ /^(\S*) :Cannot join channel/
|
91
|
-
|
91
|
+
@yail.log.info "Banned from channel #{$1}"
|
92
92
|
end
|
93
93
|
|
94
94
|
def r_badchannelkey(event)
|
95
95
|
event.message =~ /^(\S*) :Cannot join channel/
|
96
|
-
|
96
|
+
@yail.log.info "Bad channel key (password) for #{$1}"
|
97
97
|
end
|
98
98
|
|
99
99
|
def r_welcome(event)
|
100
|
-
|
100
|
+
@yail.log.info "*** Logged in as #{@yail.me}. ***"
|
101
101
|
end
|
102
102
|
|
103
103
|
# Channel URL
|
104
104
|
def r_channelurl(event)
|
105
105
|
event.message =~ /^(\S+) :?(.+)$/
|
106
|
-
|
106
|
+
@yail.log.info "{#{$1}} URL is #{$2}"
|
107
107
|
end
|
108
108
|
|
109
109
|
# Channel topic
|
110
110
|
def r_topic(event)
|
111
111
|
event.message =~ /^(\S+) :?(.+)$/
|
112
|
-
|
112
|
+
@yail.log.info "{#{$1}} Topic is: #{$2}"
|
113
113
|
end
|
114
114
|
|
115
115
|
# Channel topic setter
|
116
116
|
def r_topicinfo(event)
|
117
117
|
event.message =~ /^(\S+) (\S+) (\d+)$/
|
118
|
-
|
118
|
+
@yail.log.info "{#{$1}} Topic set by #{$2} on #{Time.at($3.to_i).asctime}"
|
119
119
|
end
|
120
120
|
|
121
121
|
# End of names
|
122
122
|
def r_endofnames(event)
|
123
123
|
event.message =~ /^(\S+)/
|
124
|
-
|
124
|
+
@yail.log.info "{#{$1}} Nickname list complete"
|
125
125
|
end
|
126
126
|
|
127
127
|
# MOTD line
|
128
128
|
def r_motd(event)
|
129
129
|
event.message =~ /^:?(.+)$/
|
130
|
-
|
130
|
+
@yail.log.info "*MOTD* #{$1}"
|
131
131
|
end
|
132
132
|
|
133
133
|
# Beginning of MOTD
|
134
134
|
def r_motdstart(event)
|
135
135
|
event.message =~ /^:?(.+)$/
|
136
|
-
|
136
|
+
@yail.log.info "*MOTD* #{$1}"
|
137
137
|
end
|
138
138
|
|
139
139
|
# End of MOTD
|
140
140
|
def r_endofmotd(event)
|
141
|
-
|
141
|
+
@yail.log.info "*MOTD* End of MOTD"
|
142
142
|
end
|
143
143
|
|
144
144
|
# Sent a privmsg (non-ctcp)
|
145
145
|
def r_out_msg(event)
|
146
|
-
|
146
|
+
@yail.log.info "{#{event.target}} <#{@yail.me}> #{event.message}"
|
147
147
|
end
|
148
148
|
|
149
149
|
# Sent a ctcp
|
150
150
|
def r_out_ctcp(event)
|
151
|
-
|
151
|
+
@yail.log.info "{#{event.target}} [#{@yail.me} #{event.message}]"
|
152
152
|
end
|
153
153
|
|
154
154
|
# Sent ctcp action
|
155
155
|
def r_out_act(event)
|
156
|
-
|
156
|
+
@yail.log.info "{#{event.target}} <#{@yail.me}> #{event.message}"
|
157
157
|
end
|
158
158
|
|
159
159
|
def r_out_notice(event)
|
160
|
-
|
160
|
+
@yail.log.info "{#{event.target}} -#{@yail.me}- #{event.message}"
|
161
161
|
end
|
162
162
|
|
163
163
|
def r_out_ctcpreply(event)
|
164
|
-
|
164
|
+
@yail.log.info "{#{event.target}} [Reply: #{@yail.me} #{event.message}]"
|
165
165
|
end
|
166
166
|
|
167
167
|
def r_out_generic(event)
|
168
|
-
|
168
|
+
@yail.log.info "bot: #{event.inspect}"
|
169
169
|
end
|
170
170
|
end
|
171
171
|
|
data/tests/tc_yail.rb
CHANGED
@@ -55,12 +55,13 @@ class YailSessionTest < Test::Unit::TestCase
|
|
55
55
|
@notices.push({:from => f, :nick => actor, :target => target, :message => message})
|
56
56
|
end
|
57
57
|
|
58
|
-
@yail.prepend_handler(:incoming_ping) { |message|
|
59
|
-
@yail.prepend_handler(:incoming_quit) { |f, actor, message|
|
58
|
+
@yail.prepend_handler(:incoming_ping) { |message| @ping_message = message; false }
|
59
|
+
@yail.prepend_handler(:incoming_quit) { |f, actor, message| @quit = {:full => f, :nick => actor, :message => message}; false }
|
60
60
|
@yail.prepend_handler(:outgoing_join) { |channel, pass| @out_join = {:channel => channel, :password => pass}; false }
|
61
|
-
@yail.prepend_handler(:
|
62
|
-
@yail.prepend_handler(:
|
63
|
-
@yail.prepend_handler(:
|
61
|
+
@yail.prepend_handler(:outgoing_kick) { |nick, channel, reason| @out_kick = {:channel => channel, :nick => nick, :message => reason}; false }
|
62
|
+
@yail.prepend_handler(:incoming_msg) { |f, actor, channel, message| @privmsg = {:channel => channel, :nick => actor, :message => message}; false }
|
63
|
+
@yail.prepend_handler(:incoming_ctcp) { |f, actor, channel, message| @ctcp = {:channel => channel, :nick => actor, :message => message}; false }
|
64
|
+
@yail.prepend_handler(:incoming_act) { |f, actor, channel, message| @act = {:channel => channel, :nick => actor, :message => message}; false }
|
64
65
|
end
|
65
66
|
|
66
67
|
# "New" handlers are set up (the 1.5+ way of doing things) here to perform tests in common with
|
@@ -110,6 +111,7 @@ class YailSessionTest < Test::Unit::TestCase
|
|
110
111
|
@yail.heard_ping { |event| @ping_message = event.message }
|
111
112
|
@yail.on_quit { |event| @quit = {:full => event.fullname, :nick => event.nick, :message => event.message} }
|
112
113
|
@yail.saying_join { |event| @out_join = {:channel => event.channel, :password => event.password} }
|
114
|
+
@yail.saying_kick { |event| @out_kick = {:channel => event.channel, :nick => event.nick, :message => event.message} }
|
113
115
|
@yail.on_msg { |event| @privmsg = {:channel => event.channel, :nick => event.nick, :message => event.message} }
|
114
116
|
@yail.on_ctcp { |event| @ctcp = {:channel => event.channel, :nick => event.nick, :message => event.message} }
|
115
117
|
@yail.on_act { |event| @act = {:channel => event.channel, :nick => event.nick, :message => event.message} }
|
@@ -194,6 +196,19 @@ class YailSessionTest < Test::Unit::TestCase
|
|
194
196
|
assert_equal "pass", @out_join[:password]
|
195
197
|
assert_equal ['#foosball'], @channels
|
196
198
|
|
199
|
+
# Kick somebody
|
200
|
+
@yail.kick("Nerdminion", "#foosball")
|
201
|
+
wait_for_irc
|
202
|
+
assert_equal("#foosball", @out_kick[:channel])
|
203
|
+
assert_equal("Nerdminion", @out_kick[:nick])
|
204
|
+
|
205
|
+
# Kick with message
|
206
|
+
@yail.kick("Nerdminion", "#foosball", "Because you're a bad, bad man")
|
207
|
+
wait_for_irc
|
208
|
+
assert_equal("#foosball", @out_kick[:channel])
|
209
|
+
assert_equal("Nerdminion", @out_kick[:nick])
|
210
|
+
assert_equal("Because you're a bad, bad man", @out_kick[:message])
|
211
|
+
|
197
212
|
# Mock some chatter to verify PRIVMSG info
|
198
213
|
mock_message ":Nerdmaster!nerd@nerdbucket.com PRIVMSG #foosball :#{@yail.me}: Welcome!" do
|
199
214
|
assert_equal 1, @msg[:msg]
|
@@ -332,9 +347,9 @@ class YailSessionTest < Test::Unit::TestCase
|
|
332
347
|
|
333
348
|
# Conditional filters are really ugly when passing a block instead of a method, so let's
|
334
349
|
# at least try to make this look decent
|
335
|
-
hearing_food = lambda { @msg[:food] += 1 }
|
336
|
-
not_hearing_bad = lambda { @msg[:not_bad] += 1 }
|
337
|
-
heard_nothing = lambda { @msg[:nothing] += 1 }
|
350
|
+
hearing_food = lambda { |e| @msg[:food] += 1 }
|
351
|
+
not_hearing_bad = lambda { |e| @msg[:not_bad] += 1 }
|
352
|
+
heard_nothing = lambda { |e| @msg[:nothing] += 1 }
|
338
353
|
|
339
354
|
# If the message looks like "food", the handler will be hit
|
340
355
|
@yail.hearing_msg(hearing_food, :if => lambda {|e| e.message =~ /food/})
|
metadata
CHANGED
@@ -1,56 +1,52 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: net-yail
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.6.1
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 6
|
9
|
-
- 0
|
10
|
-
version: 1.6.0
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Jeremy Echols
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
date: 2012-11-08 00:00:00 Z
|
12
|
+
date: 2013-02-20 00:00:00.000000000 Z
|
19
13
|
dependencies: []
|
14
|
+
description: ! 'Net::YAIL is an IRC library written in pure Ruby. Using simple functions,
|
15
|
+
it
|
20
16
|
|
21
|
-
description: |-
|
22
|
-
Net::YAIL is an IRC library written in pure Ruby. Using simple functions, it
|
23
17
|
is trivial to build a complex, event-driven IRC application, such as a bot or
|
18
|
+
|
24
19
|
even a full command-line client. All events can have a single callback and
|
20
|
+
|
25
21
|
any number of before-callback and after-callback filters. Even outgoing events,
|
22
|
+
|
26
23
|
such as when you join a channel or send a message, can have filters for stats
|
27
|
-
|
24
|
+
|
25
|
+
gathering, text filtering, etc.'
|
28
26
|
email: yail<at>nerdbucket dot com
|
29
27
|
executables: []
|
30
|
-
|
31
28
|
extensions: []
|
32
|
-
|
33
29
|
extra_rdoc_files: []
|
34
|
-
|
35
|
-
files:
|
30
|
+
files:
|
36
31
|
- examples/simple/dumbbot.rb
|
37
|
-
- examples/
|
32
|
+
- examples/simple/whois.rb
|
38
33
|
- examples/logger/default.yml
|
39
34
|
- examples/logger/logger_bot.rb
|
35
|
+
- examples/logger/run.rb
|
40
36
|
- lib/net/yail.rb
|
41
|
-
- lib/net/yail/
|
42
|
-
- lib/net/yail/yail-version.rb
|
43
|
-
- lib/net/yail/message_parser.rb
|
44
|
-
- lib/net/yail/magic_events.rb
|
45
|
-
- lib/net/yail/legacy_events.rb
|
46
|
-
- lib/net/yail/report_events.rb
|
47
|
-
- lib/net/yail/output_api.rb
|
48
|
-
- lib/net/yail/eventmap.yml
|
37
|
+
- lib/net/yail/IRCBot.rb
|
49
38
|
- lib/net/yail/default_events.rb
|
50
39
|
- lib/net/yail/dispatch.rb
|
51
|
-
- lib/net/yail/IRCBot.rb
|
52
40
|
- lib/net/yail/event.rb
|
41
|
+
- lib/net/yail/eventmap.yml
|
53
42
|
- lib/net/yail/handler.rb
|
43
|
+
- lib/net/yail/irc_bot.rb
|
44
|
+
- lib/net/yail/legacy_events.rb
|
45
|
+
- lib/net/yail/magic_events.rb
|
46
|
+
- lib/net/yail/message_parser.rb
|
47
|
+
- lib/net/yail/output_api.rb
|
48
|
+
- lib/net/yail/report_events.rb
|
49
|
+
- lib/net/yail/yail-version.rb
|
54
50
|
- tests/tc_event.rb
|
55
51
|
- tests/tc_yail.rb
|
56
52
|
- tests/tc_message_parser.rb
|
@@ -58,41 +54,33 @@ files:
|
|
58
54
|
- tests/net_yail.rb
|
59
55
|
homepage: http://ruby-irc-yail.nerdbucket.com/
|
60
56
|
licenses: []
|
61
|
-
|
62
57
|
post_install_message:
|
63
|
-
rdoc_options:
|
58
|
+
rdoc_options:
|
64
59
|
- -m
|
65
60
|
- Net::YAIL
|
66
61
|
- -f
|
67
62
|
- sdoc
|
68
|
-
require_paths:
|
63
|
+
require_paths:
|
69
64
|
- lib
|
70
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
71
66
|
none: false
|
72
|
-
requirements:
|
73
|
-
- -
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
|
76
|
-
|
77
|
-
- 0
|
78
|
-
version: "0"
|
79
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
72
|
none: false
|
81
|
-
requirements:
|
82
|
-
- -
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
|
85
|
-
segments:
|
86
|
-
- 0
|
87
|
-
version: "0"
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
88
77
|
requirements: []
|
89
|
-
|
90
78
|
rubyforge_project: net-yail
|
91
79
|
rubygems_version: 1.8.24
|
92
80
|
signing_key:
|
93
81
|
specification_version: 3
|
94
|
-
summary:
|
95
|
-
test_files:
|
82
|
+
summary: ! 'Yet Another IRC Library: wrapper for IRC communications in Ruby.'
|
83
|
+
test_files:
|
96
84
|
- tests/tc_event.rb
|
97
85
|
- tests/tc_yail.rb
|
98
86
|
- tests/tc_message_parser.rb
|