lita-words-counter 0.0.1 → 0.2.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/README.md +7 -3
- data/lib/lita/handlers/counter.rb +34 -8
- data/lita-words-counter.gemspec +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9656a5acea13ffbcfce6a6415a56cb9147b0e16d
|
4
|
+
data.tar.gz: 5e4d4166b95dd7c667e1e7b63343f79f4dfc0edc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c0b1fa780aada86c16436494b8459bf2025507633954b24375adce3ccb0cd1379e5a4af9d3d362af5db3132c5dab1671871e997e5c3c837eb0b8f658ef035fb4
|
7
|
+
data.tar.gz: 87caf1dca2118025b235e0f0564a8079a936d810e1b3e48231b53f442c369afcd8e7bfd3e8d0a8c67709134bb93f759c2806f4b04318b3e5581cb6f686f8f3c1
|
data/README.md
CHANGED
@@ -7,7 +7,7 @@ TODO: Add a description of the plugin.
|
|
7
7
|
Add lita-words-counter to your Lita instance's Gemfile:
|
8
8
|
|
9
9
|
``` ruby
|
10
|
-
gem "lita-words-counter"
|
10
|
+
gem "lita-words-counter"
|
11
11
|
```
|
12
12
|
|
13
13
|
|
@@ -17,8 +17,12 @@ TODO: Describe any configuration attributes the plugin exposes.
|
|
17
17
|
|
18
18
|
## Usage
|
19
19
|
|
20
|
-
|
20
|
+
#### show how many words alex said
|
21
|
+
`lita count alex`
|
22
|
+
|
23
|
+
#### reset words count
|
24
|
+
`lita recount`
|
21
25
|
|
22
26
|
## License
|
23
27
|
|
24
|
-
[MIT](http://opensource.org/licenses/MIT)
|
28
|
+
[MIT](http://opensource.org/licenses/MIT)
|
@@ -3,29 +3,55 @@ require "lita"
|
|
3
3
|
module Lita
|
4
4
|
module Handlers
|
5
5
|
class Counter < Handler
|
6
|
+
REDIS_SET_KEY = "counts"
|
7
|
+
|
6
8
|
route /.*/, :counter
|
7
|
-
route /\Acount\s
|
9
|
+
route /\Acount\s+(.*+)\z/i, :count, command: true
|
8
10
|
route /\Arecount\s?(.*)?\z/i, :recount, command: true
|
11
|
+
route /^count\s+top\s+(\d+)/, :list_top, command: true
|
9
12
|
|
10
13
|
def counter response
|
11
|
-
redis.
|
14
|
+
redis.zincrby REDIS_SET_KEY, 1, user_key(response.user.name)
|
12
15
|
end
|
13
16
|
|
14
17
|
def count response
|
15
|
-
response.
|
18
|
+
username = response.matches[0][0]
|
19
|
+
scores = find_scores_by_username username
|
20
|
+
response.reply generate_lines *scores
|
16
21
|
end
|
17
22
|
|
18
23
|
def recount response
|
19
|
-
|
20
|
-
|
21
|
-
|
24
|
+
redis.del REDIS_SET_KEY
|
25
|
+
response.reply '*recount done!*'
|
26
|
+
end
|
27
|
+
|
28
|
+
def list_top response
|
29
|
+
top_n = response.matches[0][0].to_i - 1
|
30
|
+
scores = redis.zrevrange REDIS_SET_KEY, 0, top_n, with_scores: true
|
31
|
+
response.reply generate_lines(scores)
|
22
32
|
end
|
23
33
|
|
24
34
|
private
|
25
35
|
|
26
|
-
def user_key
|
27
|
-
"user-#{
|
36
|
+
def user_key username
|
37
|
+
"user-#{username}".downcase
|
38
|
+
end
|
39
|
+
|
40
|
+
def unuser_key username
|
41
|
+
username.gsub('user-', '')
|
28
42
|
end
|
43
|
+
|
44
|
+
def find_scores_by_username name
|
45
|
+
scores = redis.zscan REDIS_SET_KEY, 0, { match: "#{user_key(name)}*" }
|
46
|
+
scores[1..-1]
|
47
|
+
end
|
48
|
+
|
49
|
+
def generate_lines scores
|
50
|
+
scores.map do |score|
|
51
|
+
"#{unuser_key(score[0])} said #{score[1].to_i} lines"
|
52
|
+
end.join("\n")
|
53
|
+
end
|
54
|
+
|
29
55
|
end
|
30
56
|
|
31
57
|
Lita.register_handler(Counter)
|
data/lita-words-counter.gemspec
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = "lita-words-counter"
|
3
|
-
spec.version = "0.0
|
3
|
+
spec.version = "0.2.0"
|
4
4
|
spec.authors = ["Alex S"]
|
5
5
|
spec.email = ["hlcfan.yan@gmail.com.com"]
|
6
6
|
spec.description = 'count user words'
|
7
|
-
spec.summary = '
|
7
|
+
spec.summary = 'user words counter plugin for lita'
|
8
8
|
spec.homepage = "https://github.com/hlcfan/lita-words-counter"
|
9
9
|
spec.license = "MIT"
|
10
10
|
spec.metadata = { "lita_plugin_type" => "handler" }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-words-counter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex S
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lita
|
@@ -107,6 +107,6 @@ rubyforge_project:
|
|
107
107
|
rubygems_version: 2.4.5
|
108
108
|
signing_key:
|
109
109
|
specification_version: 4
|
110
|
-
summary:
|
110
|
+
summary: user words counter plugin for lita
|
111
111
|
test_files: []
|
112
112
|
has_rdoc:
|