lita-group-mention 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.
- checksums.yaml +7 -0
- data/.gitignore +19 -0
- data/.rubocop.yml +8 -0
- data/.travis.yml +11 -0
- data/Gemfile +3 -0
- data/LICENSE +19 -0
- data/README.md +44 -0
- data/Rakefile +12 -0
- data/lib/lita-group-mention.rb +12 -0
- data/lib/lita/handlers/group_mention.rb +143 -0
- data/lita-group-mention.gemspec +27 -0
- data/locales/en.yml +23 -0
- data/spec/lita/handlers/group_mention_spec.rb +132 -0
- data/spec/spec_helper.rb +12 -0
- metadata +187 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 97fbc674c3408e504bec402d173c811da7d3309d
|
4
|
+
data.tar.gz: 200da6b42de94d5b7f94c42a3606f152eff89f5c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 18851940178cd49ba2f38e57553a28f8800727c3ce12ca00aafef4580d180b9a7ddcd2393a2b5349ab39b8ad2ebe496036f7130c3be101504c091c31db68b56a
|
7
|
+
data.tar.gz: eaff5ea8a29843bf1ad62cdb194e1544884b2a32277ec04137986d520a0abf45915e326a3c1ff2147b6d55514a34bccd61add20e65b8eae73a84a557e57e8b81
|
data/.gitignore
ADDED
data/.rubocop.yml
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
Copyright (c) 2015 Ben House
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
5
|
+
in the Software without restriction, including without limitation the rights
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
8
|
+
furnished to do so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
11
|
+
all copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# lita-group-mention
|
2
|
+
|
3
|
+
[](https://travis-ci.org/bhouse/lita-group-mention)
|
4
|
+
[](https://coveralls.io/r/bhouse/lita-group-mention?branch=master)
|
5
|
+
|
6
|
+
## Installation
|
7
|
+
|
8
|
+
Add lita-group-mention to your Lita instance's Gemfile:
|
9
|
+
|
10
|
+
``` ruby
|
11
|
+
gem "lita-group-mention"
|
12
|
+
```
|
13
|
+
|
14
|
+
## Usage
|
15
|
+
|
16
|
+
This plugin will monitor messages for mentions of groups, and expand the group
|
17
|
+
to mention a list of each user in that group. Groups are stored in redis, and
|
18
|
+
configured with commands.
|
19
|
+
|
20
|
+
```shell
|
21
|
+
Larry: Lita group mention add moe to ops
|
22
|
+
Lita: Added @moe to ops
|
23
|
+
Larry: Lita group mention add curly to dev
|
24
|
+
Lita: Added @curly to dev
|
25
|
+
Larry: Good morning @ops and @dev
|
26
|
+
Lita: cc @moe, @curly
|
27
|
+
```
|
28
|
+
|
29
|
+
```shell
|
30
|
+
Larry: Lita group mention show groups
|
31
|
+
Lita: ops: moe
|
32
|
+
dev: curly
|
33
|
+
Larry: Lita group mention remove group ops
|
34
|
+
Lita: Removed the ops group
|
35
|
+
Larry: group mention show user curly
|
36
|
+
Lita: curly: dev
|
37
|
+
Larry: group mention show user moe
|
38
|
+
Lita: moe:
|
39
|
+
```
|
40
|
+
|
41
|
+
|
42
|
+
## License
|
43
|
+
|
44
|
+
[MIT](http://opensource.org/licenses/MIT)
|
data/Rakefile
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rspec/core/rake_task'
|
3
|
+
require 'rubocop/rake_task'
|
4
|
+
require 'bump/tasks'
|
5
|
+
|
6
|
+
RSpec::Core::RakeTask.new(:spec)
|
7
|
+
|
8
|
+
RuboCop::RakeTask.new do |task|
|
9
|
+
task.fail_on_error = true
|
10
|
+
end
|
11
|
+
|
12
|
+
task default: [:rubocop, :spec]
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'lita'
|
2
|
+
|
3
|
+
Lita.load_locales Dir[File.expand_path(
|
4
|
+
File.join('..', '..', 'locales', '*.yml'), __FILE__
|
5
|
+
)]
|
6
|
+
|
7
|
+
require 'lita/handlers/group_mention'
|
8
|
+
|
9
|
+
Lita::Handlers::GroupMention.template_root File.expand_path(
|
10
|
+
File.join('..', '..', 'templates'),
|
11
|
+
__FILE__
|
12
|
+
)
|
@@ -0,0 +1,143 @@
|
|
1
|
+
module Lita
|
2
|
+
# Lita Handler module
|
3
|
+
module Handlers
|
4
|
+
# GroupMention handler class
|
5
|
+
class GroupMention < Handler
|
6
|
+
route(/@(\w+)+/, :group_mention)
|
7
|
+
route(
|
8
|
+
/^group\s+mention\s+add\s+@?(?<user>\w+)\s+to\s+@?(?<group>\w+)/,
|
9
|
+
:add_member,
|
10
|
+
command: true,
|
11
|
+
help: {
|
12
|
+
t('help.add_user_key') => t('help.add_user_value')
|
13
|
+
}
|
14
|
+
)
|
15
|
+
route(
|
16
|
+
/^group\s+mention\s+remove\s+@?(?<user>\w+)\s+from\s+@?(?<group>\w+)/,
|
17
|
+
:remove_member,
|
18
|
+
command: true,
|
19
|
+
help: {
|
20
|
+
t('help.remove_user_key') => t('help.remove_user_value')
|
21
|
+
}
|
22
|
+
)
|
23
|
+
route(
|
24
|
+
/^group\s+mention\s+remove\s+group\s+@?(?<group>\w+)/,
|
25
|
+
:remove_group,
|
26
|
+
command: true,
|
27
|
+
help: {
|
28
|
+
t('help.remove_group_key') => t('help.remove_group_value')
|
29
|
+
}
|
30
|
+
)
|
31
|
+
route(
|
32
|
+
/^group\s+mention\s+show\s+groups$/,
|
33
|
+
:show_groups,
|
34
|
+
command: true,
|
35
|
+
help: {
|
36
|
+
t('help.show_groups_key') => t('help.show_groups_value')
|
37
|
+
}
|
38
|
+
)
|
39
|
+
route(
|
40
|
+
/^group\s+mention\s+show\s+group\s+@?(?<group>\w+)/,
|
41
|
+
:show_group,
|
42
|
+
command: true,
|
43
|
+
help: {
|
44
|
+
t('help.show_group_key') => t('help.show_group_value')
|
45
|
+
}
|
46
|
+
)
|
47
|
+
route(
|
48
|
+
/^group\s+mention\s+show\s+user\s+@?(?<user>\w+)/,
|
49
|
+
:show_user,
|
50
|
+
command: true,
|
51
|
+
help: {
|
52
|
+
t('help.show_user_key') => t('help.show_user_value')
|
53
|
+
}
|
54
|
+
)
|
55
|
+
|
56
|
+
def group_mention(response) # rubocop:disable AbcSize
|
57
|
+
return if response.message.body =~ /group\s+mention/
|
58
|
+
groups = response.matches.flatten
|
59
|
+
|
60
|
+
groups.each do |g|
|
61
|
+
groups.delete(g) unless redis_groups.keys.include?(g)
|
62
|
+
end
|
63
|
+
return if groups.empty?
|
64
|
+
|
65
|
+
response.reply(t('mention.cc') + union_members(groups))
|
66
|
+
end
|
67
|
+
|
68
|
+
def add_member(response)
|
69
|
+
group = response.match_data['group']
|
70
|
+
user = response.match_data['user']
|
71
|
+
redis.sadd("user:#{user}", group)
|
72
|
+
redis.sadd("group:#{group}", user)
|
73
|
+
response.reply(t('add_member', user: user, group: group))
|
74
|
+
end
|
75
|
+
|
76
|
+
def remove_member(response)
|
77
|
+
group = response.match_data['group']
|
78
|
+
user = response.match_data['user']
|
79
|
+
redis.srem("user:#{user}", group)
|
80
|
+
redis.srem("group:#{group}", user)
|
81
|
+
response.reply(t('remove_member', user: user, group: group))
|
82
|
+
end
|
83
|
+
|
84
|
+
def remove_group(response)
|
85
|
+
group = response.match_data['group']
|
86
|
+
members = redis.smembers("group:#{group}")
|
87
|
+
members.each do |user|
|
88
|
+
redis.srem("user:#{user}", group)
|
89
|
+
end
|
90
|
+
|
91
|
+
redis.del("group:#{group}")
|
92
|
+
response.reply(t('remove_group', group: group))
|
93
|
+
end
|
94
|
+
|
95
|
+
def show_groups(response)
|
96
|
+
group_list = []
|
97
|
+
redis_groups.each do |group, members|
|
98
|
+
group_list << "#{group}: #{members.join(', ')}"
|
99
|
+
end
|
100
|
+
response.reply(group_list.join("\n"))
|
101
|
+
end
|
102
|
+
|
103
|
+
def show_group(response)
|
104
|
+
group = response.match_data['group']
|
105
|
+
|
106
|
+
unless redis_groups.key?(group)
|
107
|
+
response.reply(t('group_does_not_exist', group: group))
|
108
|
+
return
|
109
|
+
end
|
110
|
+
|
111
|
+
members = redis_groups[group]
|
112
|
+
formatted_group = "#{group}: #{members.join(', ')}"
|
113
|
+
response.reply(formatted_group)
|
114
|
+
end
|
115
|
+
|
116
|
+
def show_user(response)
|
117
|
+
user = response.match_data['user']
|
118
|
+
response.reply("#{user}: #{get_user_memberships(user).join(', ')}")
|
119
|
+
end
|
120
|
+
|
121
|
+
private
|
122
|
+
|
123
|
+
def redis_groups
|
124
|
+
@groups ||= {}
|
125
|
+
redis.keys('group:*').each do |group|
|
126
|
+
@groups[group.split(':')[-1]] = redis.smembers(group)
|
127
|
+
end
|
128
|
+
@groups
|
129
|
+
end
|
130
|
+
|
131
|
+
def get_user_memberships(user)
|
132
|
+
redis.smembers("user:#{user}")
|
133
|
+
end
|
134
|
+
|
135
|
+
def union_members(groups)
|
136
|
+
groups = groups.map { |g| "group:#{g}" }
|
137
|
+
redis.sunion(groups).sort.map { |m| "@#{m}" }.join(', ')
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
Lita.register_handler(GroupMention)
|
142
|
+
end
|
143
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = 'lita-group-mention'
|
3
|
+
spec.version = '1.0.0'
|
4
|
+
spec.authors = ['Ben House']
|
5
|
+
spec.email = ['ben@benhouse.io']
|
6
|
+
spec.description = %w(cc a list of users when a group is @mentioned)
|
7
|
+
spec.summary = %w(add users to a group, @mention the group, and the plugin will cc each user)
|
8
|
+
spec.homepage = 'https://github.com/bhouse/lita-group-mention'
|
9
|
+
spec.license = 'MIT'
|
10
|
+
spec.metadata = { 'lita_plugin_type' => 'handler' }
|
11
|
+
|
12
|
+
spec.files = `git ls-files`.split($RS)
|
13
|
+
spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
|
14
|
+
spec.test_files = spec.files.grep(/^(test|spec|features)\//)
|
15
|
+
spec.require_paths = ['lib']
|
16
|
+
|
17
|
+
spec.add_runtime_dependency 'lita', '>= 4.2'
|
18
|
+
|
19
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
20
|
+
spec.add_development_dependency 'rake'
|
21
|
+
spec.add_development_dependency 'rack-test'
|
22
|
+
spec.add_development_dependency 'rspec', '>= 3.0.0'
|
23
|
+
spec.add_development_dependency 'simplecov'
|
24
|
+
spec.add_development_dependency 'coveralls'
|
25
|
+
spec.add_development_dependency 'bump'
|
26
|
+
spec.add_development_dependency 'rubocop'
|
27
|
+
end
|
data/locales/en.yml
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
en:
|
2
|
+
lita:
|
3
|
+
handlers:
|
4
|
+
group_mention:
|
5
|
+
add_member: 'Added @%{user} to %{group}'
|
6
|
+
group_does_not_exist: '%{group} does not exist'
|
7
|
+
help:
|
8
|
+
add_user_key: 'group mention add <user> to <group>'
|
9
|
+
add_user_value: '@mention <user> when <group> is mentioned'
|
10
|
+
remove_group_key: 'group mention remove group <group>'
|
11
|
+
remove_group_value: 'remove the mention group completely'
|
12
|
+
remove_user_key: 'group mention remove <user> from <group>'
|
13
|
+
remove_user_value: 'remove <user> from list of mentions for <group>'
|
14
|
+
show_group_key: 'group mention show group <group>'
|
15
|
+
show_group_value: 'show users for <group>'
|
16
|
+
show_groups_key: 'group mention show groups'
|
17
|
+
show_groups_value: 'show all the groups and their users'
|
18
|
+
show_user_key: 'group mention show user <user>'
|
19
|
+
show_user_value: 'show all the groups <user> is a member of'
|
20
|
+
mention:
|
21
|
+
cc: 'cc '
|
22
|
+
remove_group: 'Removed the %{group} group'
|
23
|
+
remove_member: 'Removed @%{user} from %{group}'
|
@@ -0,0 +1,132 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
shared_examples 'commands' do
|
4
|
+
before(:each) do
|
5
|
+
redis_connection.flushdb
|
6
|
+
end
|
7
|
+
|
8
|
+
it 'adds a user to a group' do
|
9
|
+
send_command("group mention add #{command_user} to #{command_group}")
|
10
|
+
expect(replies.last).to eq("Added @#{chat_user} to #{chat_group}")
|
11
|
+
expect(redis.smembers("group:#{chat_group}")).to include(chat_user)
|
12
|
+
expect(redis.smembers("user:#{chat_user}")).to include(chat_group)
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'removes a user from a group' do
|
16
|
+
redis.sadd("group:#{chat_group}", chat_user)
|
17
|
+
redis.sadd("user:#{chat_user}", chat_group)
|
18
|
+
|
19
|
+
send_command("group mention remove #{command_user} from #{command_group}")
|
20
|
+
|
21
|
+
expect(replies.last).to eq(
|
22
|
+
"Removed @#{chat_user} from #{chat_group}"
|
23
|
+
)
|
24
|
+
expect(
|
25
|
+
redis.smembers("group:#{chat_group}")
|
26
|
+
).not_to include(chat_user)
|
27
|
+
expect(
|
28
|
+
redis.smembers("user:#{chat_user}")
|
29
|
+
).not_to include(chat_group)
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'removes a group' do
|
33
|
+
redis.sadd("group:#{chat_group}", chat_user)
|
34
|
+
redis.sadd("user:#{chat_user}", chat_group)
|
35
|
+
redis.sadd("user:#{chat_user}", 'foo')
|
36
|
+
|
37
|
+
send_command("group mention remove group #{command_group}")
|
38
|
+
|
39
|
+
expect(replies.last).to eq("Removed the #{chat_group} group")
|
40
|
+
expect(redis.smembers("user:#{chat_user}")).to eq(['foo'])
|
41
|
+
expect(redis.smembers("group:#{chat_group}")).to be_empty
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'shows all the groups' do
|
45
|
+
redis.sadd("group:#{chat_group}", chat_user)
|
46
|
+
|
47
|
+
send_command('group mention show groups')
|
48
|
+
expect(replies.last).to eq("#{chat_group}: #{chat_user}")
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'show that a group does not exist' do
|
52
|
+
send_command('group mention show group baz')
|
53
|
+
expect(replies.last).to eq('baz does not exist')
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'shows a specific group' do
|
57
|
+
redis.sadd("group:#{chat_group}", chat_user)
|
58
|
+
|
59
|
+
send_command("group mention show group #{command_group}")
|
60
|
+
expect(replies.last).to eq("#{chat_group}: #{chat_user}")
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'shows the groups a user is a member of' do
|
64
|
+
redis.sadd("user:#{chat_user}", chat_group)
|
65
|
+
|
66
|
+
send_command("group mention show user #{command_user}")
|
67
|
+
expect(replies.last).to eq("#{chat_user}: #{chat_group}")
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe Lita::Handlers::GroupMention, lita_handler: true do
|
72
|
+
before(:each) do
|
73
|
+
redis_connection.flushdb
|
74
|
+
end
|
75
|
+
|
76
|
+
after do
|
77
|
+
redis_connection.flushdb
|
78
|
+
end
|
79
|
+
|
80
|
+
let(:redis_namespace) { 'lita.test:handlers:group_mention' }
|
81
|
+
let(:redis_connection) do
|
82
|
+
Redis::Namespace.new(redis_namespace, redis: Redis.new)
|
83
|
+
end
|
84
|
+
|
85
|
+
context 'commands sent without @ mentions' do
|
86
|
+
include_examples 'commands' do
|
87
|
+
let(:redis) { redis_connection }
|
88
|
+
let(:chat_user) { 'test_user1' }
|
89
|
+
let(:chat_group) { 'test_group1' }
|
90
|
+
let(:command_user) { chat_user }
|
91
|
+
let(:command_group) { chat_group }
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
context 'commands sent with @ mentions' do
|
96
|
+
include_examples 'commands' do
|
97
|
+
let(:redis) { redis_connection }
|
98
|
+
let(:chat_user) { 'test_user1' }
|
99
|
+
let(:chat_group) { 'test_group1' }
|
100
|
+
let(:command_user) { '@' + chat_user }
|
101
|
+
let(:command_group) { '@' + chat_group }
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
context 'sending a message with a group mention' do
|
106
|
+
it 'expands the group mention to mention a list of users' do
|
107
|
+
redis_connection.sadd('group:group1', 'user1')
|
108
|
+
redis_connection.sadd('group:group1', 'user2')
|
109
|
+
|
110
|
+
send_message('Hello @group1')
|
111
|
+
|
112
|
+
expect(replies.last).to eq('cc @user1, @user2')
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
context 'sending a message with multiple group mentions' do
|
117
|
+
it 'expands all groups and joins their members in the mention' do
|
118
|
+
%w(10 11 12).each do |n|
|
119
|
+
redis_connection.sadd('group:group1', "user#{n}")
|
120
|
+
end
|
121
|
+
redis_connection.sadd('group:group2', 'user20')
|
122
|
+
redis_connection.sadd('group:group2', 'user21')
|
123
|
+
redis_connection.sadd('group:group2', 'user10')
|
124
|
+
|
125
|
+
send_message('Hello @group1 and @group2')
|
126
|
+
|
127
|
+
expect(replies.last).to eq(
|
128
|
+
'cc @user10, @user11, @user12, @user20, @user21'
|
129
|
+
)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
require 'coveralls'
|
3
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
4
|
+
SimpleCov::Formatter::HTMLFormatter,
|
5
|
+
Coveralls::SimpleCov::Formatter
|
6
|
+
]
|
7
|
+
SimpleCov.start { add_filter '/spec/' }
|
8
|
+
|
9
|
+
require 'lita-group-mention'
|
10
|
+
require 'lita/rspec'
|
11
|
+
|
12
|
+
Lita.version_3_compatibility_mode = false
|
metadata
ADDED
@@ -0,0 +1,187 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lita-group-mention
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ben House
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-03-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: lita
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.2'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.3'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
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: rack-test
|
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: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 3.0.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 3.0.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: simplecov
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: coveralls
|
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
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: bump
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rubocop
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
description: '["cc", "a", "list", "of", "users", "when", "a", "group", "is", "@mentioned"]'
|
140
|
+
email:
|
141
|
+
- ben@benhouse.io
|
142
|
+
executables: []
|
143
|
+
extensions: []
|
144
|
+
extra_rdoc_files: []
|
145
|
+
files:
|
146
|
+
- ".gitignore"
|
147
|
+
- ".rubocop.yml"
|
148
|
+
- ".travis.yml"
|
149
|
+
- Gemfile
|
150
|
+
- LICENSE
|
151
|
+
- README.md
|
152
|
+
- Rakefile
|
153
|
+
- lib/lita-group-mention.rb
|
154
|
+
- lib/lita/handlers/group_mention.rb
|
155
|
+
- lita-group-mention.gemspec
|
156
|
+
- locales/en.yml
|
157
|
+
- spec/lita/handlers/group_mention_spec.rb
|
158
|
+
- spec/spec_helper.rb
|
159
|
+
homepage: https://github.com/bhouse/lita-group-mention
|
160
|
+
licenses:
|
161
|
+
- MIT
|
162
|
+
metadata:
|
163
|
+
lita_plugin_type: handler
|
164
|
+
post_install_message:
|
165
|
+
rdoc_options: []
|
166
|
+
require_paths:
|
167
|
+
- lib
|
168
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
169
|
+
requirements:
|
170
|
+
- - ">="
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '0'
|
173
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
174
|
+
requirements:
|
175
|
+
- - ">="
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '0'
|
178
|
+
requirements: []
|
179
|
+
rubyforge_project:
|
180
|
+
rubygems_version: 2.2.2
|
181
|
+
signing_key:
|
182
|
+
specification_version: 4
|
183
|
+
summary: '["add", "users", "to", "a", "group,", "@mention", "the", "group,", "and",
|
184
|
+
"the", "plugin", "will", "cc", "each", "user"]'
|
185
|
+
test_files:
|
186
|
+
- spec/lita/handlers/group_mention_spec.rb
|
187
|
+
- spec/spec_helper.rb
|