newton 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -119,7 +119,7 @@ unformatted log output of IRC commands? Help is on its way! Newton
119
119
  will by default output colorized logs if printing to a terminal –
120
120
  output redirected to a file or pipe will remain without color codes.
121
121
 
122
- ### Customg logging
122
+ ### Custom logging
123
123
 
124
124
  If you want to print debug statements, you can use
125
125
  `FormattedLogger.debug(message)`.
data/examples/memo.rb CHANGED
@@ -29,10 +29,6 @@ bot = Newton::Bot.new do
29
29
  end
30
30
  end
31
31
 
32
- on :message, /^test (.+) (.+)$/ do |a, b|
33
- p [a, b]
34
- end
35
-
36
32
  on :message, /^!memo (\S+) (.+)$/ do |target, text|
37
33
  p [target, text]
38
34
  target = User(target)
data/lib/newton/bot.rb CHANGED
@@ -173,7 +173,8 @@ module Newton
173
173
  # though
174
174
  #
175
175
  # @return [void]
176
- def on(event, *regexps, &block)
176
+ def on(event, regexps = [], *args, &block)
177
+ regexps = [*regexps]
177
178
  regexps = [//] if regexps.empty?
178
179
 
179
180
  event = event.to_sym
@@ -186,7 +187,7 @@ module Newton
186
187
  regexp
187
188
  end
188
189
  end
189
- (@events[event] ||= []) << [regexps, block]
190
+ (@events[event] ||= []) << [regexps, args, block]
190
191
  end
191
192
 
192
193
  # Define helper methods in the context of the bot.
@@ -304,8 +305,7 @@ module Newton
304
305
  def dispatch(event, msg = nil)
305
306
  if handlers = find(event, msg)
306
307
  handlers.each do |handler|
307
- regexps, block = *handler
308
-
308
+ regexps, args, block = *handler
309
309
  # calling Message#match multiple times is not a problem
310
310
  # because we cache the result
311
311
  if msg
@@ -315,7 +315,7 @@ module Newton
315
315
  captures = []
316
316
  end
317
317
 
318
- invoke(block, msg, captures)
318
+ invoke(block, args, msg, captures)
319
319
  end
320
320
  end
321
321
  end
@@ -327,27 +327,27 @@ module Newton
327
327
  return events
328
328
  end
329
329
 
330
- events.select { |regexps,_|
331
- regexps.any? { |regexp|
330
+ events.select { |regexps|
331
+ regexps.first.any? { |regexp|
332
332
  msg.match(regexp, type)
333
333
  }
334
334
  }
335
335
  end
336
336
  end
337
337
 
338
- def invoke(block, msg, match)
338
+ def invoke(block, args, msg, match)
339
339
  # -1 splat arg, send everything
340
340
  # 0 no args, send nothing
341
341
  # 1 defined number of args, send only those
342
342
  bargs = case block.arity <=> 0
343
343
  when -1; match
344
344
  when 0; []
345
- when 1; match[0..block.arity-1]
345
+ when 1; match[0..block.arity-1 - args.size]
346
346
  end
347
347
  Thread.new do
348
348
  begin
349
349
  catch(:halt) do
350
- Callback.new(block, msg, self).call(*bargs)
350
+ Callback.new(block, args, msg, self).call(*bargs)
351
351
  end
352
352
  rescue => e
353
353
  FormattedLogger.debug "#{e.backtrace.first}: #{e.message} (#{e.class})"
@@ -1,13 +1,13 @@
1
1
  module Newton
2
2
  # @api private
3
3
  class Callback
4
- def initialize(block, msg, bot)
5
- @block, @msg, @bot, @bargs = block, msg, bot
4
+ def initialize(block, args, msg, bot)
5
+ @block, @args, @msg, @bot, @bargs = block, args, msg, bot
6
6
  end
7
7
 
8
8
  # @return [void]
9
9
  def call(*bargs)
10
- instance_exec(*bargs, &@block)
10
+ instance_exec(*@args, *bargs, &@block)
11
11
  end
12
12
 
13
13
  # Forwards method calls to the current message and bot instance.
data/lib/newton/irc.rb CHANGED
@@ -75,6 +75,16 @@ module Newton
75
75
  [:message, :private]
76
76
  end)
77
77
 
78
+ dispatch_msg = msg
79
+ elsif msg.command == "NOTICE"
80
+ events.concat(if msg.ctcp?
81
+ [:ctcp]
82
+ elsif msg.channel?
83
+ [:notice, :channel]
84
+ else
85
+ [:notice, :private]
86
+ end)
87
+
78
88
  dispatch_msg = msg
79
89
  elsif msg.command == "PING"
80
90
  events << :ping
data/lib/newton/user.rb CHANGED
@@ -115,6 +115,11 @@ module Newton
115
115
  @data[:authname]
116
116
  end
117
117
 
118
+ # @see Syncable#attr
119
+ def attr(attribute, data = true, unsync = false)
120
+ super
121
+ end
122
+
118
123
  # Queries the IRC server for information on the user. This will
119
124
  # set the User's state to not synced. After all information are
120
125
  # received, the object will be set back to synced.
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 1
9
- version: 0.0.1
8
+ - 2
9
+ version: 0.0.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Dominik Honnef
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-05-18 00:00:00 +02:00
17
+ date: 2010-05-20 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies: []
20
20