cinch-seen 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 ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
data/README.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Cinch::Plugins::Seen
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/cinch-seen.png)](http://badge.fury.io/rb/cinch-seen)
4
+ [![Dependency Status](https://gemnasium.com/bhaberer/cinch-seen.png)](https://gemnasium.com/bhaberer/cinch-seen)
5
+ [![Build Status](https://travis-ci.org/bhaberer/cinch-seen.png?branch=master)](https://travis-ci.org/bhaberer/cinch-seen)
6
+ [![Coverage Status](https://coveralls.io/repos/bhaberer/cinch-seen/badge.png?branch=master)](https://coveralls.io/r/bhaberer/cinch-seen?branch=master)
7
+ [![Code Climate](https://codeclimate.com/github/bhaberer/cinch-seen.png)](https://codeclimate.com/github/bhaberer/cinch-seen)
8
+
3
9
  Cinch Plugin to allow users to ask the bot when the last time it saw a given user was.
4
10
 
5
11
  ## Installation
data/Rakefile CHANGED
@@ -1 +1,7 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new
5
+
6
+ task :default => :spec
7
+ task :test => :spec
data/cinch-seen.gemspec CHANGED
@@ -16,10 +16,16 @@ Gem::Specification.new do |gem|
16
16
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
+
20
+ gem.add_development_dependency 'rake'
21
+ gem.add_development_dependency 'rspec'
22
+ gem.add_development_dependency 'coveralls'
19
23
 
20
- gem.add_dependency 'cinch', '>= 2.0.0'
21
- gem.add_dependency 'time-lord', '1.0.1'
22
- gem.add_dependency 'cinch-toolbox'
23
- gem.add_dependency 'cinch-storage'
24
- gem.add_dependency 'cinch-cooldown'
24
+ gem.add_dependency 'cinch', '~> 2.0.5'
25
+ gem.add_dependency 'cinch-test', '~> 0.0.3'
26
+ gem.add_dependency 'cinch-toolbox', '~> 1.0.0'
27
+ gem.add_dependency 'cinch-cooldown', '~> 1.0.0'
28
+ gem.add_dependency 'time-lord', '~> 1.0.1'
29
+ gem.add_dependency 'cinch-storage', '~> 0.0.2'
30
+ gem.add_dependency 'cinch-cooldown', '~> 1.0.0'
25
31
  end
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
+ require 'cinch'
2
3
  require 'cinch-toolbox'
3
4
  require 'cinch-storage'
4
5
  require 'cinch-cooldown'
@@ -13,38 +14,46 @@ module Cinch::Plugins
13
14
  self.help = "Use .seen <name> to see the last time that nick was active."
14
15
 
15
16
  listen_to :channel
16
- attr_accessor :storage
17
17
 
18
- match /seen (.+)/
18
+ match /seen ([^\s]+)\z/
19
19
 
20
20
  def initialize(*args)
21
21
  super
22
22
  @storage = CinchStorage.new(config[:filename] || 'yaml/seen.yml')
23
- @storage.data[:seen] ||= {}
23
+ @storage.data ||= {}
24
24
  end
25
25
 
26
26
  def listen(m)
27
- @storage.data[:seen][m.channel.name] = {} unless @storage.data[:seen].key?(m.channel.name)
28
- @storage.data[:seen][m.channel.name][m.user.nick.downcase] = Time.now
29
-
30
- synchronize(:seen_save) do
31
- @storage.save
32
- end
27
+ channel = m.channel.name
28
+ @storage.data[channel] ||= Hash.new
29
+ @storage.data[channel][m.user.nick.downcase] = Time.now
30
+ @storage.synced_save(@bot)
33
31
  end
34
32
 
35
33
  def execute(m, nick)
36
- if m.channel.nil?
37
- m.user.msg "You must use that command in the main channel."
38
- return
34
+ return if sent_via_pm?(m)
35
+ unless m.user.nick.downcase == nick.downcase
36
+ m.reply last_seen(m.channel.name, nick), true
39
37
  end
38
+ end
40
39
 
41
- unless m.user.nick.downcase == nick.downcase
42
- if @storage.data[:seen][m.channel.name].key?(nick.downcase)
43
- m.reply "I last saw #{nick} #{@storage.data[:seen][m.channel.name][nick.downcase].ago.to_words}", true
44
- else
45
- m.reply "I've never seen #{nick} before, sorry!", true
46
- end
40
+ private
41
+
42
+ def last_seen(channel, nick)
43
+ @storage.data[channel] ||= Hash.new
44
+ time = @storage.data[channel][nick.downcase]
45
+
46
+ if time.nil?
47
+ "I've never seen #{nick} before, sorry!"
48
+ else
49
+ "I last saw #{nick} #{time.ago.to_words}"
47
50
  end
48
51
  end
52
+
53
+ def sent_via_pm?(m)
54
+ return false unless m.channel.nil?
55
+ m.reply "You must use that command in the main channel."
56
+ true
57
+ end
49
58
  end
50
59
  end
@@ -1,7 +1,7 @@
1
1
  module Cinch
2
2
  module Plugins
3
3
  class Seen
4
- VERSION = "0.0.2"
4
+ VERSION = "1.0.0"
5
5
  end
6
6
  end
7
7
  end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe Cinch::Plugins::Seen do
4
+
5
+ include Cinch::Test
6
+
7
+ before(:each) do
8
+ @bot = make_bot(Cinch::Plugins::Seen, { :filename => '/dev/null' })
9
+ end
10
+
11
+ it 'should allow users to see when users were last active' do
12
+ get_replies(make_message(@bot, 'hello, world!', { :nick => 'foo', :channel => '#bar' }))
13
+ sleep 1 # time-lord hack
14
+ msg = make_message(@bot, '!seen foo', { :nick => 'baz', :channel => '#bar' })
15
+ get_replies(msg).last.
16
+ should match(/baz: I last saw foo \d seconds? ago/)
17
+ end
18
+
19
+ it 'should not respond to a users seen request for themselves' do
20
+ msg = make_message(@bot, '!seen foo', { :nick => 'foo', :channel => '#bar' })
21
+ get_replies(msg).
22
+ should be_empty
23
+ end
24
+
25
+ it 'should inform users when a person has not been seen before' do
26
+ msg = make_message(@bot, '!seen foo', { :channel => '#bar' })
27
+ get_replies(msg).first.
28
+ should == "test: I've never seen foo before, sorry!"
29
+ end
30
+
31
+ it 'should not let people make dumb jokes (or look for multiple people in one seen)' do
32
+ get_replies(make_message(@bot, '!seen your mom today', { :channel => '#bar' })).
33
+ should be_empty
34
+ get_replies(make_message(@bot, '!seen archer pam lana', { :channel => '#bar' })).
35
+ should be_empty
36
+ end
37
+ end
@@ -0,0 +1,5 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+ require 'cinch-seen'
4
+ require 'cinch/test'
5
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cinch-seen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,49 +9,49 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-05 00:00:00.000000000 Z
12
+ date: 2013-07-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: cinch
15
+ name: rake
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: 2.0.0
22
- type: :runtime
21
+ version: '0'
22
+ type: :development
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
- version: 2.0.0
29
+ version: '0'
30
30
  - !ruby/object:Gem::Dependency
31
- name: time-lord
31
+ name: rspec
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  none: false
34
34
  requirements:
35
- - - '='
35
+ - - ! '>='
36
36
  - !ruby/object:Gem::Version
37
- version: 1.0.1
38
- type: :runtime
37
+ version: '0'
38
+ type: :development
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
- - - '='
43
+ - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
- version: 1.0.1
45
+ version: '0'
46
46
  - !ruby/object:Gem::Dependency
47
- name: cinch-toolbox
47
+ name: coveralls
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
51
51
  - - ! '>='
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
- type: :runtime
54
+ type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  none: false
@@ -59,38 +59,118 @@ dependencies:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: cinch
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 2.0.5
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 2.0.5
78
+ - !ruby/object:Gem::Dependency
79
+ name: cinch-test
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 0.0.3
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 0.0.3
94
+ - !ruby/object:Gem::Dependency
95
+ name: cinch-toolbox
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 1.0.0
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 1.0.0
110
+ - !ruby/object:Gem::Dependency
111
+ name: cinch-cooldown
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 1.0.0
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 1.0.0
126
+ - !ruby/object:Gem::Dependency
127
+ name: time-lord
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: 1.0.1
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: 1.0.1
62
142
  - !ruby/object:Gem::Dependency
63
143
  name: cinch-storage
64
144
  requirement: !ruby/object:Gem::Requirement
65
145
  none: false
66
146
  requirements:
67
- - - ! '>='
147
+ - - ~>
68
148
  - !ruby/object:Gem::Version
69
- version: '0'
149
+ version: 0.0.2
70
150
  type: :runtime
71
151
  prerelease: false
72
152
  version_requirements: !ruby/object:Gem::Requirement
73
153
  none: false
74
154
  requirements:
75
- - - ! '>='
155
+ - - ~>
76
156
  - !ruby/object:Gem::Version
77
- version: '0'
157
+ version: 0.0.2
78
158
  - !ruby/object:Gem::Dependency
79
159
  name: cinch-cooldown
80
160
  requirement: !ruby/object:Gem::Requirement
81
161
  none: false
82
162
  requirements:
83
- - - ! '>='
163
+ - - ~>
84
164
  - !ruby/object:Gem::Version
85
- version: '0'
165
+ version: 1.0.0
86
166
  type: :runtime
87
167
  prerelease: false
88
168
  version_requirements: !ruby/object:Gem::Requirement
89
169
  none: false
90
170
  requirements:
91
- - - ! '>='
171
+ - - ~>
92
172
  - !ruby/object:Gem::Version
93
- version: '0'
173
+ version: 1.0.0
94
174
  description: Cinch Plugin to allow users to find out how long it's been since a user
95
175
  was active
96
176
  email:
@@ -100,6 +180,7 @@ extensions: []
100
180
  extra_rdoc_files: []
101
181
  files:
102
182
  - .gitignore
183
+ - .travis.yml
103
184
  - Gemfile
104
185
  - LICENSE.txt
105
186
  - README.md
@@ -108,6 +189,8 @@ files:
108
189
  - lib/cinch-seen.rb
109
190
  - lib/cinch/plugins/seen/seen.rb
110
191
  - lib/cinch/plugins/seen/version.rb
192
+ - spec/cinch-seen_spec.rb
193
+ - spec/spec_helper.rb
111
194
  homepage: https://github.com/bhaberer/cinch-seen
112
195
  licenses: []
113
196
  post_install_message:
@@ -132,4 +215,7 @@ rubygems_version: 1.8.24
132
215
  signing_key:
133
216
  specification_version: 3
134
217
  summary: Cinch Plugin for Seen
135
- test_files: []
218
+ test_files:
219
+ - spec/cinch-seen_spec.rb
220
+ - spec/spec_helper.rb
221
+ has_rdoc: