sponge 0.2.8 → 0.2.9
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/Rakefile +5 -6
- data/lib/sponge/irc/client.rb +12 -4
- data/lib/sponge/irc/listeners.rb +5 -0
- data/lib/sponge/version.rb +1 -1
- data/spec/helper.rb +10 -0
- data/spec/sponge/irc/client.rb +45 -0
- metadata +19 -6
data/Rakefile
CHANGED
@@ -8,15 +8,14 @@ require "lib/sponge/version"
|
|
8
8
|
NAME = 'sponge'
|
9
9
|
VERSION = Sponge::VERSION
|
10
10
|
TITLE = "Sponge: The simple IRC library"
|
11
|
-
CLEAN.include ["*.gem", "
|
11
|
+
CLEAN.include ["*.gem", "doc"]
|
12
12
|
RDOC_OPTS = [
|
13
|
-
"
|
14
|
-
"--title", TITLE,
|
13
|
+
"-U", "--title", TITLE,
|
15
14
|
"--main", "README.rdoc"
|
16
15
|
]
|
17
16
|
|
18
17
|
Rake::RDocTask.new do |rdoc|
|
19
|
-
rdoc.rdoc_dir = "
|
18
|
+
rdoc.rdoc_dir = "doc"
|
20
19
|
rdoc.options += RDOC_OPTS
|
21
20
|
rdoc.rdoc_files.add %w(README.rdoc lib/**/*.rb)
|
22
21
|
end
|
@@ -48,7 +47,7 @@ end
|
|
48
47
|
|
49
48
|
desc "Upload rdoc to injekt.net"
|
50
49
|
task :upload do
|
51
|
-
sh("scp -rP 2295
|
50
|
+
sh("scp -rP 2295 doc/* injekt@injekt.net:/var/www/localhost/rdoc.injekt.net/sponge")
|
52
51
|
end
|
53
52
|
|
54
|
-
task :default => [:rdoc, :package]
|
53
|
+
task :default => [:clean, :rdoc, :package]
|
data/lib/sponge/irc/client.rb
CHANGED
@@ -41,9 +41,16 @@ module Sponge
|
|
41
41
|
# Client configuration options
|
42
42
|
attr_reader :config
|
43
43
|
|
44
|
+
# Our Listeners Object
|
45
|
+
attr_reader :listeners
|
46
|
+
|
44
47
|
def initialize(server=nil, opts={}, &blk)
|
45
|
-
|
46
|
-
|
48
|
+
config = opts.merge(OptionsDSL.new(server, &blk).options)
|
49
|
+
config = OpenStruct.new(opts.merge(config))
|
50
|
+
@config = config
|
51
|
+
|
52
|
+
config.port ||= 6667
|
53
|
+
raise(ArgumentError, "No server supplied") unless config.server
|
47
54
|
|
48
55
|
@irc = IRC::Socket.new(config.server, config.port)
|
49
56
|
@irc.client = self
|
@@ -108,7 +115,8 @@ module Sponge
|
|
108
115
|
private
|
109
116
|
|
110
117
|
def setup_username
|
111
|
-
|
118
|
+
nick = config.nickname || 'Sponge'
|
119
|
+
config.nickname ||= nick
|
112
120
|
config.username ||= nick
|
113
121
|
config.hostname ||= nick
|
114
122
|
config.realname ||= nick
|
@@ -125,7 +133,7 @@ module Sponge
|
|
125
133
|
def initialize(server=nil, &blk)
|
126
134
|
@options = {}
|
127
135
|
server(server) if server
|
128
|
-
instance_eval(&blk)
|
136
|
+
instance_eval(&blk) if block_given?
|
129
137
|
end
|
130
138
|
|
131
139
|
def server(val)
|
data/lib/sponge/irc/listeners.rb
CHANGED
@@ -41,6 +41,7 @@ module Sponge
|
|
41
41
|
raise "listener for #{command} already exists" if @list.key?(command)
|
42
42
|
@list[command] = Listener.new(command, &blk)
|
43
43
|
end
|
44
|
+
commands
|
44
45
|
end
|
45
46
|
|
46
47
|
# Remove a listener from our list
|
@@ -52,6 +53,10 @@ module Sponge
|
|
52
53
|
@list[command]
|
53
54
|
end
|
54
55
|
|
56
|
+
def include?(k)
|
57
|
+
@list.key?(k)
|
58
|
+
end
|
59
|
+
|
55
60
|
# Invoke #call on a Listener if it exists passing an IRC::Message
|
56
61
|
def handle(message)
|
57
62
|
raise "Not a IRC::Message" unless message.is_a?(Sponge::IRC::Message)
|
data/lib/sponge/version.rb
CHANGED
data/spec/helper.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
require File.expand_path('../../../helper', __FILE__)
|
2
|
+
|
3
|
+
client = Sponge::IRC::Client.new('irc.freenode.org')
|
4
|
+
|
5
|
+
describe "Sponge::IRC::Client" do
|
6
|
+
|
7
|
+
it "should default to port 6667" do
|
8
|
+
client.config.port.should == 6667
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should default to nickname 'Sponge'" do
|
12
|
+
client.config.nickname.should == 'Sponge'
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should use the default nickname if no username, hostname, or realname are supplied" do
|
16
|
+
c = Sponge::IRC::Client.new('', :nickname => 'foobot')
|
17
|
+
|
18
|
+
[:username, :hostname, :realname].each do |attr|
|
19
|
+
c.config.send(attr).should == 'foobot'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "#set_nick" do
|
24
|
+
it "should change the nickname" do
|
25
|
+
client.set_nick("Spongebot")
|
26
|
+
|
27
|
+
client.config.nickname.should.not == 'Sponge'
|
28
|
+
client.config.nickname.should == 'Spongebot'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "#on" do
|
33
|
+
it "should create a listener" do
|
34
|
+
client.on('foo')
|
35
|
+
client.listeners.include?('foo').should.be.true
|
36
|
+
client.listeners.all.should.include?('foo')
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should return a list of commands we've added listeners to" do
|
40
|
+
listeners = client.on(:bar, :baz)
|
41
|
+
listeners.should.equal [:bar, :baz]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 9
|
9
|
+
version: 0.2.9
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Lee 'injekt' Jarvis
|
@@ -16,8 +16,21 @@ cert_chain: []
|
|
16
16
|
|
17
17
|
date: 2010-04-05 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
|
-
dependencies:
|
20
|
-
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: bacon
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 1
|
29
|
+
- 1
|
30
|
+
- 0
|
31
|
+
version: 1.1.0
|
32
|
+
type: :development
|
33
|
+
version_requirements: *id001
|
21
34
|
description: A simple IRC library
|
22
35
|
email: ljjarvis@gmail.com
|
23
36
|
executables: []
|
@@ -31,6 +44,8 @@ files:
|
|
31
44
|
- Rakefile
|
32
45
|
- examples/client.rb
|
33
46
|
- examples/socket.rb
|
47
|
+
- spec/sponge/irc/client.rb
|
48
|
+
- spec/helper.rb
|
34
49
|
- lib/sponge/version.rb
|
35
50
|
- lib/sponge/irc/listeners.rb
|
36
51
|
- lib/sponge/irc/client.rb
|
@@ -46,8 +61,6 @@ licenses: []
|
|
46
61
|
post_install_message:
|
47
62
|
rdoc_options:
|
48
63
|
- --quiet
|
49
|
-
- --line-numbers
|
50
|
-
- --inline-source
|
51
64
|
- --title
|
52
65
|
- "Sponge: The Simple IRC library"
|
53
66
|
- --main
|