cinch-pax-timer 0.0.2 → 1.0.0
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/.travis.yml +4 -0
- data/README.md +12 -2
- data/Rakefile +6 -0
- data/cinch-pax-timer.gemspec +5 -1
- data/lib/cinch/plugins/pax-timer/pax-timer.rb +40 -16
- data/lib/cinch/plugins/pax-timer/version.rb +1 -1
- data/spec/cinch-pax-timer_spec.rb +64 -0
- data/spec/spec_helper.rb +25 -0
- metadata +72 -4
- data/config/pax.yml +0 -17
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,6 +1,16 @@
|
|
1
|
-
# Cinch::
|
1
|
+
# Cinch::Plugins::PaxTimer
|
2
2
|
|
3
|
-
|
3
|
+
[](http://badge.fury.io/rb/cinch-pax-timer)
|
4
|
+
[](https://gemnasium.com/bhaberer/cinch-pax-timer)
|
5
|
+
[](https://travis-ci.org/bhaberer/cinch-pax-timer)
|
6
|
+
[](https://coveralls.io/r/bhaberer/cinch-pax-timer?branch=master)
|
7
|
+
[](https://codeclimate.com/github/bhaberer/cinch-pax-timer)
|
8
|
+
|
9
|
+
Cinch Plugin to track the time till PAX.
|
10
|
+
|
11
|
+
I will eventually try to expand this into an event agnostic EventTimer
|
12
|
+
plugin, but issues with how cince scopes config values with plugins are
|
13
|
+
slowing down that effort.
|
4
14
|
|
5
15
|
## Installation
|
6
16
|
|
data/Rakefile
CHANGED
data/cinch-pax-timer.gemspec
CHANGED
@@ -17,7 +17,11 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = ["lib"]
|
19
19
|
|
20
|
+
gem.add_development_dependency 'rake'
|
21
|
+
gem.add_development_dependency 'rspec'
|
22
|
+
gem.add_development_dependency 'coveralls'
|
23
|
+
gem.add_development_dependency 'cinch-test'
|
24
|
+
|
20
25
|
gem.add_dependency 'cinch-cooldown', '>= 1.0.0'
|
21
26
|
gem.add_dependency 'cinch-toolbox', '~> 1.0.1'
|
22
|
-
|
23
27
|
end
|
@@ -1,6 +1,7 @@
|
|
1
|
+
require 'cinch'
|
1
2
|
require 'time-lord'
|
2
|
-
require 'cinch-cooldown'
|
3
3
|
require 'cinch-toolbox'
|
4
|
+
require 'cinch-cooldown'
|
4
5
|
|
5
6
|
module Cinch::Plugins
|
6
7
|
class PaxTimer
|
@@ -10,31 +11,44 @@ module Cinch::Plugins
|
|
10
11
|
|
11
12
|
self.help = "Use .pax for the next pax or .east, .prime, or .aus for the time to a specific pax."
|
12
13
|
|
13
|
-
match /
|
14
|
-
match /east|paxeast/, method: :next_east
|
15
|
-
match /prime|paxprime/, method: :next_prime
|
16
|
-
match /aus|paxaus/, method: :next_aus
|
14
|
+
match /pax\z/, method: :next_pax
|
17
15
|
|
18
16
|
def next_pax(m)
|
19
17
|
m.reply get_next_pax
|
20
18
|
end
|
21
19
|
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
PAXES = [
|
21
|
+
{ :type => 'prime',
|
22
|
+
:name => 'PAX Prime',
|
23
|
+
:date => Time.parse('2013-08-30 08:00:00 -08:00'),
|
24
|
+
:estimated => false },
|
25
|
+
{ :type => 'aus',
|
26
|
+
:name => 'PAX Australia',
|
27
|
+
:date => Time.parse('2013-07-19 08:00:00 -08:00'),
|
28
|
+
:estimated => false },
|
29
|
+
{ :type => 'east',
|
30
|
+
:name => 'PAX East',
|
31
|
+
:date => Time.parse('2014-04-11 08:00:00 -08:00'),
|
32
|
+
:estimated => false }
|
33
|
+
]
|
34
|
+
|
35
|
+
PAXES.map{ |p| p[:type] }.each do |pax|
|
36
|
+
match /#{pax}|pax#{pax}/, :method => "next_#{pax}"
|
37
|
+
|
38
|
+
define_method "next_#{pax}" do |m|
|
39
|
+
debug "#{pax}"
|
40
|
+
m.reply get_next_pax(pax.to_s)
|
25
41
|
end
|
26
42
|
end
|
27
43
|
|
28
|
-
|
29
|
-
@filename = File.join(File.dirname(__FILE__), "../../../../config/pax.yml")
|
30
|
-
if File::exist?(@filename)
|
31
|
-
@paxes = YAML::load(File.open(@filename))
|
44
|
+
private
|
32
45
|
|
33
|
-
|
34
|
-
|
35
|
-
@paxes.sort! { |a,b| b[:date] <=> a[:date] }
|
46
|
+
def get_next_pax(type = nil)
|
47
|
+
@pax = get_next_pax_for(type)
|
36
48
|
|
37
|
-
|
49
|
+
if @pax.nil?
|
50
|
+
return 'I don\'t have info for the next one of those PAXes'
|
51
|
+
else
|
38
52
|
message = "#{@pax[:name]} is "
|
39
53
|
message << 'approximately ' if @pax[:estimated]
|
40
54
|
|
@@ -46,5 +60,15 @@ module Cinch::Plugins
|
|
46
60
|
return message
|
47
61
|
end
|
48
62
|
end
|
63
|
+
|
64
|
+
def get_next_pax_for(type)
|
65
|
+
paxes = PAXES.dup
|
66
|
+
|
67
|
+
paxes.delete_if { |pax| pax[:date] - Time.now < 0 }
|
68
|
+
paxes.delete_if { |pax| pax[:type] != type } unless type.nil?
|
69
|
+
paxes.sort! { |a,b| b[:date] <=> a[:date] }
|
70
|
+
|
71
|
+
return paxes.last
|
72
|
+
end
|
49
73
|
end
|
50
74
|
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Cinch::Plugins::PaxTimer do
|
4
|
+
|
5
|
+
include Cinch::Test
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
@bot = make_bot(Cinch::Plugins::PaxTimer, {})
|
9
|
+
end
|
10
|
+
|
11
|
+
before(:all) do
|
12
|
+
# @plugin = Cinch::Plugins::PaxTimer.new
|
13
|
+
end
|
14
|
+
|
15
|
+
describe :pax do
|
16
|
+
it 'should return the next pax' do
|
17
|
+
msg = make_message(@bot, '!pax')
|
18
|
+
get_replies(msg).first.
|
19
|
+
should match(/PAX.+is \d+ days from now/)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should return nothing if there are arguments' do
|
23
|
+
msg = make_message(@bot, '!pax fail')
|
24
|
+
get_replies(msg).first.
|
25
|
+
should be_nil
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should respond to .prime correctly' do
|
30
|
+
msg = make_message(@bot, '!prime')
|
31
|
+
get_replies(msg).first.
|
32
|
+
should match(/PAX Prime is \d+ days from now/)
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'should respond to .paxprime correctly' do
|
36
|
+
msg = make_message(@bot, '!paxprime')
|
37
|
+
get_replies(msg).first.
|
38
|
+
should match(/PAX Prime is \d+ days from now/)
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should respond to .east correctly' do
|
42
|
+
msg = make_message(@bot, '!east')
|
43
|
+
get_replies(msg).first.
|
44
|
+
should match(/PAX East is \d+ days from now/)
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'should respond to .paxeast correctly' do
|
48
|
+
msg = make_message(@bot, '!paxeast')
|
49
|
+
get_replies(msg).first.
|
50
|
+
should match(/PAX East is \d+ days from now/)
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'should respond to .aus correctly' do
|
54
|
+
msg = make_message(@bot, '!aus')
|
55
|
+
get_replies(msg).first.
|
56
|
+
should match(/PAX Australia is \d+ days from now/)
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'should respond to .paxaus correctly' do
|
60
|
+
msg = make_message(@bot, '!paxaus')
|
61
|
+
get_replies(msg).first.
|
62
|
+
should match(/PAX Australia is \d+ days from now/)
|
63
|
+
end
|
64
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'coveralls'
|
2
|
+
Coveralls.wear!
|
3
|
+
require 'cinch-pax-timer'
|
4
|
+
|
5
|
+
require 'cinch/test'
|
6
|
+
=begin
|
7
|
+
def fake_bot
|
8
|
+
bot = Cinch::Bot.new
|
9
|
+
bot.loggers.level = :fatal
|
10
|
+
bot
|
11
|
+
return bot
|
12
|
+
end
|
13
|
+
|
14
|
+
module Cinch
|
15
|
+
module Plugin
|
16
|
+
def initialize(opts = {})
|
17
|
+
@bot = fake_bot
|
18
|
+
@handlers = []
|
19
|
+
@timers = []
|
20
|
+
# Don't init the bot
|
21
|
+
# __register
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
=end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cinch-pax-timer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,72 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-06-
|
12
|
+
date: 2013-06-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rspec
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: coveralls
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: cinch-test
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
14
78
|
- !ruby/object:Gem::Dependency
|
15
79
|
name: cinch-cooldown
|
16
80
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,15 +116,17 @@ extensions: []
|
|
52
116
|
extra_rdoc_files: []
|
53
117
|
files:
|
54
118
|
- .gitignore
|
119
|
+
- .travis.yml
|
55
120
|
- Gemfile
|
56
121
|
- LICENSE.txt
|
57
122
|
- README.md
|
58
123
|
- Rakefile
|
59
124
|
- cinch-pax-timer.gemspec
|
60
|
-
- config/pax.yml
|
61
125
|
- lib/cinch-pax-timer.rb
|
62
126
|
- lib/cinch/plugins/pax-timer/pax-timer.rb
|
63
127
|
- lib/cinch/plugins/pax-timer/version.rb
|
128
|
+
- spec/cinch-pax-timer_spec.rb
|
129
|
+
- spec/spec_helper.rb
|
64
130
|
homepage: https://github.com/bhaberer/cinch-pax-timer
|
65
131
|
licenses: []
|
66
132
|
post_install_message:
|
@@ -85,5 +151,7 @@ rubygems_version: 1.8.24
|
|
85
151
|
signing_key:
|
86
152
|
specification_version: 3
|
87
153
|
summary: Cinch Plugin that acts as a PAX countdown
|
88
|
-
test_files:
|
154
|
+
test_files:
|
155
|
+
- spec/cinch-pax-timer_spec.rb
|
156
|
+
- spec/spec_helper.rb
|
89
157
|
has_rdoc:
|
data/config/pax.yml
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
---
|
2
|
-
- :type: east
|
3
|
-
:name: PAX East
|
4
|
-
:date: 2013-03-21 08:00:00 -08:00
|
5
|
-
:estimated: false
|
6
|
-
- :type: prime
|
7
|
-
:name: PAX Prime
|
8
|
-
:date: 2013-08-30 08:00:00 -08:00
|
9
|
-
:estimated: false
|
10
|
-
- :type: aus
|
11
|
-
:name: PAX Australia
|
12
|
-
:date: 2013-07-19 08:00:00 -08:00
|
13
|
-
:estimated: false
|
14
|
-
- :type: east
|
15
|
-
:name: PAX East
|
16
|
-
:date: 2014-04-11 08:00:00 -08:00
|
17
|
-
:estimated: false
|