robut-roulette 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 52701342cd332f6b5779798e76fb1c7c5e41ef56
4
+ data.tar.gz: 7474f8d6fa358b1dabf1142a8f028d46c2baa9c5
5
+ SHA512:
6
+ metadata.gz: 0f9055c5af4f083a5f13df077f64859aaf93cc955c0ec25933c8cb07fdf166af1bea877fc64185e20fe45970fd10e9d3bf6a0eafab60eea04869d37e49f634b3
7
+ data.tar.gz: 2b5c4f3647b82d3e4d26da74306be68d68dcd3029243e8227176815e7189e54d20aa3289eda8cdb661ce90699f7fff5ec146f99bb50d8309068007fed605fa6c
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/Gemfile ADDED
@@ -0,0 +1,17 @@
1
+ source "http://rubygems.org"
2
+ # Add dependencies required to use your gem here.
3
+ # Example:
4
+ # gem "activesupport", ">= 2.3.5"
5
+
6
+ gem "robut", ">= 0.4"
7
+
8
+ # Add dependencies to develop your gem here.
9
+ # Include everything needed to run rake, tests, features, etc.
10
+ group :development do
11
+ gem "simplecov"
12
+ gem "shoulda", ">= 0"
13
+ gem "rdoc", "~> 3.12"
14
+ gem "bundler", "~> 1.0"
15
+ gem "jeweler", "~> 1.8.7"
16
+ gem "mocha"
17
+ end
@@ -0,0 +1,14 @@
1
+ = robut-roulette
2
+
3
+ A Roulette module for {Robut}[https://github.com/justinweiss/robut] based on the {PipSqueek}[https://github.com/mozor/pipsqueek] IRC bot module
4
+
5
+ == Contributing to robut-roulette
6
+
7
+ * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
8
+ * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
9
+ * Fork the project.
10
+ * Start a feature/bugfix branch.
11
+ * Commit and push until you are happy with your contribution.
12
+ * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
13
+ * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
14
+
@@ -0,0 +1,45 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
+ gem.name = "robut-roulette"
18
+ gem.homepage = "http://github.com/richard4339/robut-roulette"
19
+ gem.license = "MIT"
20
+ gem.summary = %Q{A roulette module for robut}
21
+ gem.description = %Q{A roulette module for robut}
22
+ gem.email = "richard@mozor.net"
23
+ gem.authors = ["Richard Lynskey"]
24
+ # dependencies defined in Gemfile
25
+ end
26
+ Jeweler::RubygemsDotOrgTasks.new
27
+
28
+ require 'rake/testtask'
29
+ Rake::TestTask.new(:test) do |test|
30
+ test.libs << 'lib' << 'test'
31
+ test.pattern = 'test/**/test_*.rb'
32
+ test.verbose = true
33
+ end
34
+
35
+ task :default => :test
36
+
37
+ require 'rdoc/task'
38
+ Rake::RDocTask.new do |rdoc|
39
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
40
+
41
+ rdoc.rdoc_dir = 'rdoc'
42
+ rdoc.title = "robut-roulette #{version}"
43
+ rdoc.rdoc_files.include('README*')
44
+ rdoc.rdoc_files.include('lib/**/*.rb')
45
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.1
@@ -0,0 +1,59 @@
1
+ # A simple roulette module
2
+ class Robut::Plugin::Roulette
3
+ include Robut::Plugin
4
+
5
+ def usage
6
+ [ "#{at_nick} roulette - takes a shot" ]
7
+ end
8
+
9
+ def handle(time, sender_nick, message)
10
+ words = words(message)
11
+ return if words.index("roulette").nil?
12
+
13
+ if last_draw == sender_nick
14
+ return reply "#{sender_nick}: you can't shoot twice in a row, dolt!"
15
+ end
16
+
17
+ outcome = draw
18
+ stats(sender_nick, outcome)
19
+
20
+ output = "Shot #{shot} of 6:"
21
+ if outcome == 1
22
+ reply "#{output} (boom)"
23
+ reply "*reloads*"
24
+ reset
25
+ else
26
+ reply "#{output} *click*"
27
+ end
28
+ end
29
+
30
+ def roulette
31
+ store["roulette"] ||= [0,0,0,0,0,1].shuffle
32
+ end
33
+
34
+ def game
35
+ store["game"] ||= []
36
+ end
37
+
38
+ def shot
39
+ 6 - roulette.length
40
+ end
41
+
42
+ def draw
43
+ roulette.pop unless roulette.empty?
44
+ end
45
+
46
+ def last_draw
47
+ game.last unless game.empty?
48
+ end
49
+
50
+ def stats(user,outcome)
51
+ game.push(user)
52
+ end
53
+
54
+ def reset
55
+ store["roulette"] = [0,0,0,0,0,1].shuffle
56
+ store["game"] = []
57
+ end
58
+
59
+ end
@@ -0,0 +1,69 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "robut-roulette"
8
+ s.version = "0.1.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Richard Lynskey"]
12
+ s.date = "2013-12-21"
13
+ s.description = "A roulette module for robut"
14
+ s.email = "richard@mozor.net"
15
+ s.extra_rdoc_files = [
16
+ "README.rdoc"
17
+ ]
18
+ s.files = [
19
+ ".document",
20
+ "Gemfile",
21
+ "README.rdoc",
22
+ "Rakefile",
23
+ "VERSION",
24
+ "lib/robut-roulette.rb",
25
+ "robut-roulette.gemspec",
26
+ "test/connection_mock.rb",
27
+ "test/helper.rb",
28
+ "test/presence_mock.rb",
29
+ "test/simplecov_helper.rb",
30
+ "test/test_helper.rb",
31
+ "test/test_robut-roulette.rb"
32
+ ]
33
+ s.homepage = "http://github.com/richard4339/robut-roulette"
34
+ s.licenses = ["MIT"]
35
+ s.require_paths = ["lib"]
36
+ s.rubygems_version = "2.0.3"
37
+ s.summary = "A roulette module for robut"
38
+
39
+ if s.respond_to? :specification_version then
40
+ s.specification_version = 4
41
+
42
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
43
+ s.add_runtime_dependency(%q<robut>, [">= 0.4"])
44
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
45
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
46
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
47
+ s.add_development_dependency(%q<bundler>, ["~> 1.0"])
48
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.7"])
49
+ s.add_development_dependency(%q<mocha>, [">= 0"])
50
+ else
51
+ s.add_dependency(%q<robut>, [">= 0.4"])
52
+ s.add_dependency(%q<simplecov>, [">= 0"])
53
+ s.add_dependency(%q<shoulda>, [">= 0"])
54
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
55
+ s.add_dependency(%q<bundler>, ["~> 1.0"])
56
+ s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
57
+ s.add_dependency(%q<mocha>, [">= 0"])
58
+ end
59
+ else
60
+ s.add_dependency(%q<robut>, [">= 0.4"])
61
+ s.add_dependency(%q<simplecov>, [">= 0"])
62
+ s.add_dependency(%q<shoulda>, [">= 0"])
63
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
64
+ s.add_dependency(%q<bundler>, ["~> 1.0"])
65
+ s.add_dependency(%q<jeweler>, ["~> 1.8.7"])
66
+ s.add_dependency(%q<mocha>, [">= 0"])
67
+ end
68
+ end
69
+
@@ -0,0 +1,22 @@
1
+ require 'robut/storage/hash_store'
2
+
3
+ class Robut::ConnectionMock < Robut::Connection
4
+
5
+ attr_accessor :messages
6
+
7
+ def initialize(config = nil)
8
+ self.messages = []
9
+ self.config = config || self.class.config
10
+ self.store = Robut::Storage::HashStore
11
+ self.client = Jabber::Client.new ''
12
+ end
13
+
14
+ def connect
15
+ self.rooms = []
16
+ self
17
+ end
18
+
19
+ def reply(message, to)
20
+ self.messages << [message, to]
21
+ end
22
+ end
@@ -0,0 +1,18 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ require 'test/unit'
11
+ require 'shoulda'
12
+
13
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
15
+ require 'robut-roulette'
16
+
17
+ class Test::Unit::TestCase
18
+ end
@@ -0,0 +1,25 @@
1
+ require 'robut/storage/hash_store'
2
+
3
+ class Robut::PresenceMock < Robut::Room
4
+
5
+ def initialize(connection)
6
+ self.connection = connection
7
+ end
8
+
9
+ def replies
10
+ @replies ||= []
11
+ end
12
+
13
+ def reply(msg, to = nil)
14
+ replies << msg
15
+ end
16
+
17
+ def handle_message(plugins, time, nick, message)
18
+ messages << [time, nick, message]
19
+ end
20
+
21
+ def messages
22
+ @messages ||= []
23
+ end
24
+
25
+ end
@@ -0,0 +1,2 @@
1
+ require 'simplecov'
2
+ SimpleCov.start
@@ -0,0 +1,9 @@
1
+ require 'robut'
2
+ require 'test/unit'
3
+ require 'presence_mock'
4
+ require 'connection_mock'
5
+
6
+ Robut::ConnectionMock.configure do |config|
7
+ config.nick = "Robut t. Robot"
8
+ config.mention_name = "robut"
9
+ end
@@ -0,0 +1,43 @@
1
+ require 'test_helper'
2
+ require 'robut'
3
+ require 'robut-roulette'
4
+ require 'mocha/setup'
5
+
6
+ class Robut::Plugin::RouletteTest < Test::Unit::TestCase
7
+
8
+ def setup
9
+ @connection = Robut::ConnectionMock.new
10
+ @presence = Robut::PresenceMock.new(@connection)
11
+ @plugin = Robut::Plugin::Roulette.new(@presence)
12
+ end
13
+
14
+ def test_handle_roulette_shot_1_win
15
+ @plugin.stubs(:shot).returns(1)
16
+ @plugin.stubs(:draw).returns(0)
17
+ @plugin.handle(Time.now, "John", "roulette")
18
+ assert_equal( ["Shot 1 of 6: *click*"], @plugin.reply_to.replies )
19
+ end
20
+
21
+ # This one actually depends on the previous one to work
22
+ def test_handle_roulette_shot_2_repeat
23
+ @plugin.stubs(:shot).returns(1)
24
+ @plugin.stubs(:draw).returns(0)
25
+ @plugin.handle(Time.now, "John", "roulette")
26
+ assert_equal( ["John: you can't shoot twice in a row, dolt!"], @plugin.reply_to.replies )
27
+ end
28
+
29
+ def test_handle_roulette_shot_2_win
30
+ @plugin.stubs(:shot).returns(2)
31
+ @plugin.stubs(:draw).returns(0)
32
+ @plugin.handle(Time.now, "Jane", "roulette")
33
+ assert_equal( ["Shot 2 of 6: *click*"], @plugin.reply_to.replies )
34
+ end
35
+
36
+ def test_handle_roulette_shot_1_lose
37
+ @plugin.stubs(:shot).returns(1)
38
+ @plugin.stubs(:draw).returns(1)
39
+ @plugin.handle(Time.now, "Tim", "roulette")
40
+ assert_equal( ["Shot 1 of 6: (boom)", "*reloads*"], @plugin.reply_to.replies )
41
+ end
42
+
43
+ end
metadata ADDED
@@ -0,0 +1,155 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: robut-roulette
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Richard Lynskey
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-12-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: robut
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0.4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0.4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: simplecov
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: shoulda
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rdoc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '3.12'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '3.12'
69
+ - !ruby/object:Gem::Dependency
70
+ name: bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '1.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '1.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: jeweler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 1.8.7
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 1.8.7
97
+ - !ruby/object:Gem::Dependency
98
+ name: mocha
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: A roulette module for robut
112
+ email: richard@mozor.net
113
+ executables: []
114
+ extensions: []
115
+ extra_rdoc_files:
116
+ - README.rdoc
117
+ files:
118
+ - .document
119
+ - Gemfile
120
+ - README.rdoc
121
+ - Rakefile
122
+ - VERSION
123
+ - lib/robut-roulette.rb
124
+ - robut-roulette.gemspec
125
+ - test/connection_mock.rb
126
+ - test/helper.rb
127
+ - test/presence_mock.rb
128
+ - test/simplecov_helper.rb
129
+ - test/test_helper.rb
130
+ - test/test_robut-roulette.rb
131
+ homepage: http://github.com/richard4339/robut-roulette
132
+ licenses:
133
+ - MIT
134
+ metadata: {}
135
+ post_install_message:
136
+ rdoc_options: []
137
+ require_paths:
138
+ - lib
139
+ required_ruby_version: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ required_rubygems_version: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - '>='
147
+ - !ruby/object:Gem::Version
148
+ version: '0'
149
+ requirements: []
150
+ rubyforge_project:
151
+ rubygems_version: 2.0.3
152
+ signing_key:
153
+ specification_version: 4
154
+ summary: A roulette module for robut
155
+ test_files: []