ruboty-karma 0.2.2 → 0.3.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.
- checksums.yaml +4 -4
- data/Rakefile +10 -1
- data/lib/ruboty/karma.rb +15 -2
- data/lib/ruboty/karma/actions/delete.rb +35 -0
- data/lib/ruboty/karma/version.rb +1 -1
- data/ruboty-karma.gemspec +3 -1
- data/test/ruboty/karma_test.rb +63 -0
- metadata +33 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a56590d972dfc201689c903d1e25a8c8c75dabd3
|
4
|
+
data.tar.gz: 3bd7d652a90ade4a24b4363ec17a1c6657c48b91
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c005bf59d8b73e4f6187315022d6e436cbd3c1a0a7903f463e94f9e77a4ba9e2aa448cf7d36a47ff2694c12449cb00385ef0ff1578ee61d34212457408903aac
|
7
|
+
data.tar.gz: e99d67cb4778888921314c0abc08d4e112bdc1d29f369c0097f21bb8799339d223f02377b4ce32ba3aaea313ab0cecf80bdb86d367a6980f774bfe826b8bc46f
|
data/Rakefile
CHANGED
@@ -1,7 +1,16 @@
|
|
1
|
-
require
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rake/testtask'
|
2
3
|
|
3
4
|
task :upgrade do
|
4
5
|
`git add .`
|
5
6
|
`git commit -m "auto upgrade"`
|
6
7
|
`git push origin master`
|
7
8
|
end
|
9
|
+
|
10
|
+
Rake::TestTask.new(:test) do |t|
|
11
|
+
t.libs << 'test'
|
12
|
+
t.libs << 'lib'
|
13
|
+
t.test_files = FileList['test/**/*_test.rb']
|
14
|
+
end
|
15
|
+
|
16
|
+
task :default => :test
|
data/lib/ruboty/karma.rb
CHANGED
@@ -2,19 +2,28 @@ require 'ruboty'
|
|
2
2
|
require 'ruboty/karma/version'
|
3
3
|
require 'ruboty/karma/actions/increase'
|
4
4
|
require 'ruboty/karma/actions/list'
|
5
|
+
require 'ruboty/karma/actions/delete'
|
5
6
|
|
6
7
|
module Ruboty
|
7
8
|
module Handlers
|
8
9
|
class Karma < Base
|
10
|
+
INCREMENT_PATTERN = /@?(?<name>[^@:\s]+):?\s+\+\+/m
|
11
|
+
DELETE_PATTERN = /delete karma @?(?<name>[^@:\s]+):?/m
|
12
|
+
|
9
13
|
on(
|
10
|
-
|
14
|
+
INCREMENT_PATTERN,
|
11
15
|
name: 'increment',
|
12
16
|
description: "increment a user's karma"
|
13
17
|
)
|
14
18
|
on(
|
15
19
|
/list karma/,
|
16
20
|
name: 'list',
|
17
|
-
description: "list all
|
21
|
+
description: "list all users' karma"
|
22
|
+
)
|
23
|
+
on(
|
24
|
+
DELETE_PATTERN,
|
25
|
+
name: 'delete',
|
26
|
+
description: "delete a user's karma"
|
18
27
|
)
|
19
28
|
|
20
29
|
def increment(message)
|
@@ -24,6 +33,10 @@ module Ruboty
|
|
24
33
|
def list(message)
|
25
34
|
Ruboty::Karma::Actions::List.new(message).call
|
26
35
|
end
|
36
|
+
|
37
|
+
def delete(message)
|
38
|
+
Ruboty::Karma::Actions::Delete.new(message).call
|
39
|
+
end
|
27
40
|
end
|
28
41
|
end
|
29
42
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Ruboty
|
2
|
+
module Karma
|
3
|
+
module Actions
|
4
|
+
class Delete < Ruboty::Actions::Base
|
5
|
+
def call
|
6
|
+
name = message[:name]
|
7
|
+
reset(name)
|
8
|
+
delete_user(name)
|
9
|
+
reply(name)
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def reply(name)
|
15
|
+
message.reply("Deleted #{name}")
|
16
|
+
end
|
17
|
+
|
18
|
+
def delete_user(name)
|
19
|
+
brain = message.robot.brain
|
20
|
+
key = 'karma-list'
|
21
|
+
brain.data[key] ||= []
|
22
|
+
users = brain.data[key]
|
23
|
+
users.delete(name)
|
24
|
+
brain.data[key] = users
|
25
|
+
end
|
26
|
+
|
27
|
+
def reset(name)
|
28
|
+
brain = message.robot.brain
|
29
|
+
key = "karma-@#{name}"
|
30
|
+
brain.data[key] = nil
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/ruboty/karma/version.rb
CHANGED
data/ruboty-karma.gemspec
CHANGED
@@ -10,13 +10,15 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ['hkdnet@users.noreply.github.com']
|
11
11
|
|
12
12
|
spec.files = `git ls-files -z`.split("\x0")
|
13
|
+
spec.test_files = Dir['{test/**/*}']
|
13
14
|
spec.summary = "manage members' karma"
|
14
15
|
spec.homepage = 'https://github.com/hkdnet/ruboty-karma'
|
15
16
|
spec.license = 'MIT'
|
16
17
|
|
17
18
|
spec.require_paths = ['lib']
|
18
|
-
|
19
19
|
spec.add_dependency 'ruboty'
|
20
20
|
spec.add_development_dependency 'bundler', '~> 1.10'
|
21
21
|
spec.add_development_dependency 'rake', '~> 10.0'
|
22
|
+
spec.add_development_dependency 'minitest'
|
23
|
+
spec.add_development_dependency 'minitest-power_assert'
|
22
24
|
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'minitest-power_assert'
|
3
|
+
require 'ruboty/karma'
|
4
|
+
|
5
|
+
describe Ruboty::Handlers::Karma do
|
6
|
+
class Ruboty::Handlers::Karma
|
7
|
+
def self.increment_pattern
|
8
|
+
INCREMENT_PATTERN
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.delete_pattern
|
12
|
+
DELETE_PATTERN
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe 'INCREMENT_PATTERN' do
|
17
|
+
pattern = Ruboty::Handlers::Karma.increment_pattern
|
18
|
+
it "should match '@hoge ++' -> hoge" do
|
19
|
+
match = pattern.match('@hoge ++')
|
20
|
+
assert { !match.nil? }
|
21
|
+
assert { match['name'] == 'hoge' }
|
22
|
+
end
|
23
|
+
it "should match '@hoge: ++' -> hoge" do
|
24
|
+
match = pattern.match('@hoge: ++')
|
25
|
+
assert { !match.nil? }
|
26
|
+
assert { match['name'] == 'hoge' }
|
27
|
+
end
|
28
|
+
it "should match 'hoge ++' -> hoge" do
|
29
|
+
match = pattern.match('hoge ++')
|
30
|
+
assert { !match.nil? }
|
31
|
+
assert { match['name'] == 'hoge' }
|
32
|
+
end
|
33
|
+
it "should match 'hoge: ++' -> hoge" do
|
34
|
+
match = pattern.match('hoge: ++')
|
35
|
+
assert { !match.nil? }
|
36
|
+
assert { match['name'] == 'hoge' }
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe 'DELETE_PATTERN' do
|
41
|
+
pattern = Ruboty::Handlers::Karma.delete_pattern
|
42
|
+
it "should match 'delete karma @hoge' -> hoge" do
|
43
|
+
match = pattern.match('delete karma @hoge')
|
44
|
+
assert { !match.nil? }
|
45
|
+
assert { match['name'] == 'hoge' }
|
46
|
+
end
|
47
|
+
it "should match 'delete karma @hoge:' -> hoge" do
|
48
|
+
match = pattern.match('delete karma @hoge:')
|
49
|
+
assert { !match.nil? }
|
50
|
+
assert { match['name'] == 'hoge' }
|
51
|
+
end
|
52
|
+
it "should match 'delete karma hoge' -> hoge" do
|
53
|
+
match = pattern.match('delete karma hoge')
|
54
|
+
assert { !match.nil? }
|
55
|
+
assert { match['name'] == 'hoge' }
|
56
|
+
end
|
57
|
+
it "should match 'delete karma hoge:' -> hoge" do
|
58
|
+
match = pattern.match('delete karma hoge:')
|
59
|
+
assert { !match.nil? }
|
60
|
+
assert { match['name'] == 'hoge' }
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruboty-karma
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- hkdnet
|
@@ -52,6 +52,34 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: minitest
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: minitest-power_assert
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
55
83
|
description:
|
56
84
|
email:
|
57
85
|
- hkdnet@users.noreply.github.com
|
@@ -65,10 +93,12 @@ files:
|
|
65
93
|
- README.md
|
66
94
|
- Rakefile
|
67
95
|
- lib/ruboty/karma.rb
|
96
|
+
- lib/ruboty/karma/actions/delete.rb
|
68
97
|
- lib/ruboty/karma/actions/increase.rb
|
69
98
|
- lib/ruboty/karma/actions/list.rb
|
70
99
|
- lib/ruboty/karma/version.rb
|
71
100
|
- ruboty-karma.gemspec
|
101
|
+
- test/ruboty/karma_test.rb
|
72
102
|
homepage: https://github.com/hkdnet/ruboty-karma
|
73
103
|
licenses:
|
74
104
|
- MIT
|
@@ -93,4 +123,5 @@ rubygems_version: 2.4.5.1
|
|
93
123
|
signing_key:
|
94
124
|
specification_version: 4
|
95
125
|
summary: manage members' karma
|
96
|
-
test_files:
|
126
|
+
test_files:
|
127
|
+
- test/ruboty/karma_test.rb
|