on_irc 2.1.1 → 2.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.1.1
1
+ 2.1.3
@@ -8,14 +8,14 @@ class IRC
8
8
 
9
9
  ## EventMachine callbacks
10
10
  def post_init
11
- send_data("USER #{@server.ident || @server.irc.ident} * * #{@server.realname || @server.irc.realname}\r\n")
11
+ send_data("USER #{@server.ident || @server.irc.ident} * * :#{@server.realname || @server.irc.realname}\r\n")
12
12
  send_data("NICK #{@server.nick || @server.irc.nick}\r\n")
13
13
  rescue => e
14
14
  p e
15
15
  end
16
16
 
17
17
  def receive_line(line)
18
- @server.receive_line(line.force_encoding('utf-8'))
18
+ @server.receive_line(RUBY_VERSION < "1.9" ? line : line.force_encoding('utf-8'))
19
19
  end
20
20
 
21
21
  def unbind
data/lib/on_irc/parser.rb CHANGED
@@ -8,11 +8,11 @@ class IRC
8
8
 
9
9
  if msg.peek(1) == ':'
10
10
  msg.pos += 1
11
- prefix = msg.scan /\S+/
11
+ prefix = msg.scan /\S+/u
12
12
  msg.skip /\s+/
13
13
  end
14
14
 
15
- command = msg.scan /\S+/
15
+ command = msg.scan /\S+/u
16
16
 
17
17
  until msg.eos?
18
18
  msg.skip /\s+/
@@ -22,7 +22,7 @@ class IRC
22
22
  params << msg.rest
23
23
  msg.terminate
24
24
  else
25
- params << msg.scan(/\S+/)
25
+ params << msg.scan(/\S+/u)
26
26
  end
27
27
  end
28
28
 
metadata CHANGED
@@ -1,36 +1,34 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: on_irc
3
- version: !ruby/object:Gem::Version
4
- version: 2.1.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.1.3
5
+ prerelease:
5
6
  platform: ruby
6
- authors:
7
+ authors:
7
8
  - Scott Olson
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
-
12
- date: 2010-01-19 00:00:00 -06:00
13
- default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2011-12-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: eventmachine
16
+ requirement: &14911800 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
17
22
  type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
24
- version:
23
+ prerelease: false
24
+ version_requirements: *14911800
25
25
  description: An event driven IRC library with an easy to use DSL
26
26
  email: scott@scott-olson.org
27
27
  executables: []
28
-
29
28
  extensions: []
30
-
31
- extra_rdoc_files:
29
+ extra_rdoc_files:
32
30
  - LICENSE
33
- files:
31
+ files:
34
32
  - LICENSE
35
33
  - Rakefile
36
34
  - VERSION
@@ -45,35 +43,28 @@ files:
45
43
  - lib/on_irc/parser.rb
46
44
  - lib/on_irc/sender.rb
47
45
  - lib/on_irc/server.rb
48
- has_rdoc: true
49
46
  homepage: http://github.com/tsion/on_irc
50
47
  licenses: []
51
-
52
48
  post_install_message:
53
- rdoc_options:
54
- - --charset=UTF-8
55
- require_paths:
49
+ rdoc_options: []
50
+ require_paths:
56
51
  - lib
57
- required_ruby_version: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: "0"
62
- version:
63
- required_rubygems_version: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
68
- version:
52
+ required_ruby_version: !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ! '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ required_rubygems_version: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
69
64
  requirements: []
70
-
71
65
  rubyforge_project:
72
- rubygems_version: 1.3.5
66
+ rubygems_version: 1.8.11
73
67
  signing_key:
74
68
  specification_version: 3
75
69
  summary: An event driven IRC library with an easy to use DSL
76
- test_files:
77
- - examples/regex_bot.rb
78
- - examples/relay.rb
79
- - examples/bot.rb
70
+ test_files: []
data/examples/bot.rb DELETED
@@ -1,40 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.join(File.dirname(__FILE__), '..', 'lib', 'on_irc')
3
-
4
- bot = IRC.new do
5
- nick 'on_irc'
6
- ident 'on_irc'
7
- realname 'on_irc Ruby IRC library'
8
-
9
- server :eighthbit do
10
- address 'irc.eighthbit.net'
11
- end
12
- end
13
-
14
-
15
- bot[:eighthbit].on '001' do
16
- join '#bots'
17
- end
18
-
19
- bot.on :privmsg do
20
- case params[1]
21
- when '!ping'
22
- respond "#{sender.nick}: pong"
23
- when /^!echo (.*)/
24
- respond "#{sender.nick}: #{$1}"
25
- when /^!join (.*)/
26
- join $1
27
- end
28
- end
29
-
30
- bot.on :ping do
31
- pong params[0]
32
- end
33
-
34
- bot.on :all do
35
- p = "(#{sender}) " unless sender.empty?
36
- puts "#{server.name}: #{p}#{command} #{params.inspect}"
37
- end
38
-
39
- bot.connect
40
-
@@ -1,96 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.join(File.dirname(__FILE__), '..', 'lib', 'on_irc')
3
-
4
- MAX_BANGS = 3
5
- CH_USER_MEMORY = {}
6
- CHANNEL_MEMORY = {}
7
-
8
- bot = IRC.new do
9
- nick 'reggie'
10
- ident 'reggie'
11
- realname 'uses on_irc Ruby IRC library'
12
-
13
- server :eighthbit do
14
- address 'irc.eighthbit.net'
15
- end
16
-
17
- # server :freenode do
18
- # address 'irc.freenode.org'
19
- # end
20
- end
21
-
22
- bot[:eighthbit].on :'001' do
23
- join '#programming'
24
- join '#offtopic'
25
- end
26
-
27
- bot.on :privmsg do
28
- next unless params[0][0,1] == '#' # make sure regex replace only happens in channels
29
- channel = params[0]
30
- message = params[1]
31
-
32
- CHANNEL_MEMORY[channel] ||= []
33
- CH_USER_MEMORY[channel] ||= {}
34
- CH_USER_MEMORY[channel][sender.nick] ||= []
35
-
36
- if params[1] =~ %r"^(!*)s/((?:[^\\/]|\\.)*)/((?:[^\\/]|\\.)*)/(?:(\w*))?"
37
- bangs = $1
38
- match = $2
39
- replace = $3
40
- flags = $4
41
-
42
- if bangs.length > MAX_BANGS
43
- respond "#{sender.nick}: I only support up to #{MAX_BANGS} !'s."
44
- respond 'in bed' if rand(1000) == 42
45
- next
46
- end
47
-
48
- begin
49
- match = Regexp.new match
50
- rescue RegexpError => err
51
- respond "RegexpError: #{err.message}"
52
- next
53
- end
54
-
55
- target = if bangs.length == 0
56
- CHANNEL_MEMORY[channel][1] || ''
57
- else
58
- CH_USER_MEMORY[channel][sender.nick][-bangs.length] || ''
59
- end
60
-
61
- if flags.chars.include? 'g'
62
- answer = target.gsub(match, replace)
63
- else
64
- answer = target.sub(match, replace)
65
- end
66
-
67
- if bangs.length > 0 || CHANNEL_MEMORY[channel][0] == sender.nick
68
- respond "#{sender.nick} meant: #{answer}"
69
- else
70
- respond "#{sender.nick} thinks #{CHANNEL_MEMORY[channel][0]} meant: #{answer}"
71
- end
72
-
73
- else
74
- if message =~ /^\x01(\S+) (.*)\x01$/
75
- next unless $1 == 'ACTION'
76
-
77
- message = "* #{sender.nick} #{$2}"
78
- end
79
-
80
- CH_USER_MEMORY[channel][sender.nick] << message
81
- CH_USER_MEMORY[channel][sender.nick].unshift if CH_USER_MEMORY[channel][sender.nick].length > MAX_BANGS
82
-
83
- CHANNEL_MEMORY[channel] = [sender.nick, message]
84
- end
85
- end
86
-
87
- bot.on :ping do
88
- pong params[0]
89
- end
90
-
91
- bot.on :all do
92
- p = "(#{sender}) " unless sender.empty?
93
- puts "#{server.name}: #{p}#{command} #{params.inspect}"
94
- end
95
-
96
- bot.connect
data/examples/relay.rb DELETED
@@ -1,46 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.join(File.dirname(__FILE__), '..', 'lib', 'on_irc')
3
-
4
- bot = IRC.new do
5
- nick 'on_irc-relay'
6
- ident 'on_irc'
7
- realname 'on_irc Ruby IRC library - relay example'
8
-
9
- server :eighthbit do
10
- address 'irc.eighthbit.net'
11
- end
12
-
13
- server :freenode do
14
- address 'irc.freenode.org'
15
- end
16
- end
17
-
18
-
19
- bot[:freenode].on '001' do
20
- join '#botters'
21
- end
22
-
23
- bot[:eighthbit].on '001' do
24
- join '#offtopic'
25
- end
26
-
27
- bot.on :privmsg do
28
- case params[1]
29
- when /^fn> (.*)/
30
- bot[:freenode].msg('#botters', "<8b:#{sender.nick}> #{$1}") if params[0] == '#offtopic' && server.name == :eighthbit
31
- when /^8b> (.*)/
32
- bot[:eighthbit].msg('#offtopic', "<fn:#{sender.nick}> #{$1}") if params[0] == '#botters' && server.name == :freenode
33
- end
34
- end
35
-
36
- bot.on :ping do
37
- pong params[0]
38
- end
39
-
40
- bot.on :all do
41
- p = "(#{sender}) " unless sender.empty?
42
- puts "#{server.name}: #{p}#{command} #{params.inspect}"
43
- end
44
-
45
- bot.connect
46
-