lita-onewheel-doc 0.1.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 83c92d625c92489b3e7df2496b145ae85d5880da
4
- data.tar.gz: 43b09dfc7c62e5744ed8e406c4a8a63c684eac36
3
+ metadata.gz: decc977034b40bf5eb2e30d28eee02ab48060c2a
4
+ data.tar.gz: 687983c64a8bb2c4474d7e0bbcb629c86ec1e9d1
5
5
  SHA512:
6
- metadata.gz: 6c307e0df22e0aabb9585a5d693e52247b3d5c298d3c4ee64eee7bf0b118b6664bd98b7032b51fbcafa2322058f216f097ceaa3bd7bfd164749e28bc188ac9ab
7
- data.tar.gz: 18e1a21a70d5eb4e6a8df90afe14b10f4ec251941507dde0c2acb1a3fda7e02e6fc09b7370f45156ae0b8315a281521d2bc19758673450090e104d39f1750482
6
+ metadata.gz: bfbe6ed73a4319c0d6745c7ef2a033d378a4602ac39fa56b2cc1a16aeec70c99a191066d47580de71f6cadfa8a7ef26c7844bf0a1fce9c80b75bae4b12934656
7
+ data.tar.gz: 05626560bfa0f84c3a858fbf687a24fae976a253e8d105a78b18d175cb4e7e264ee32f77d473c2edd4b648771d9f111523a3f2c57b87f60855b5722cf8fa710d
@@ -3,44 +3,72 @@ module Lita
3
3
  class OnewheelDoc < Handler
4
4
  REDIS_KEY = 'onewheel-doc'
5
5
 
6
- route /^docdel\s+([\w\/+_-]+)$/, :del_key, command: true,
7
- help: '!docdel key removes a key'
8
- route /^doc\s+([\w\/+_-]+)\s+(.*)$/, :add_key, command: true,
9
- help: '!doc key_val http:// Add a key using key_val and the http link'
10
- route /^doc$/, :list_keys, command: true,
11
- help: '!doc list all keys'
12
- route /^doc\s+(\w+)$/, :fetch_key, command: true,
13
- help: '!doc key_val fetch the value for key_val'
14
-
15
- def add_key(response)
6
+ route /^docdel\s+([\w\/+_-]+)$/,
7
+ :command_del_key,
8
+ command: true,
9
+ help: '!docdel key removes a key'
10
+ route /^doc\s+([\w\/+_-]+)\s+(.*)$/,
11
+ :command_add_key,
12
+ command: true,
13
+ help: '!doc key_val http:// Add a key using key_val and the http link'
14
+ route /^doc$/,
15
+ :command_list_keys,
16
+ command: true,
17
+ help: '!doc list all keys'
18
+ route /^doc\s+(\w+)$/,
19
+ :command_fetch_key,
20
+ command: true,
21
+ help: '!doc key_val fetch the value for key_val'
22
+
23
+ def command_add_key(response)
16
24
  key = response.matches[0][0]
17
25
  value = response.matches[0][1]
18
26
  redis.hset(REDIS_KEY, key, value)
19
27
  response.reply "Documented #{key} as #{value}"
20
28
  end
21
29
 
22
- def fetch_key(response)
30
+ def command_fetch_key(response)
23
31
  key = response.matches[0][0]
24
32
 
25
- value = redis.hget(REDIS_KEY, key)
26
- response.reply value
33
+ reply = redis.hget(REDIS_KEY, key)
34
+
35
+ # If we didn't find an exact key, perform a substring match
36
+ if reply.nil?
37
+ reply = get_values_that_start_with_key(key)
38
+ end
39
+ response.reply reply
27
40
  end
28
41
 
29
- def list_keys(response)
42
+ def command_list_keys(response)
30
43
  replies = []
31
44
 
32
45
  all = redis.hgetall(REDIS_KEY)
33
46
  all.each do |key, val|
34
- replies.push "#{key}: #{val}"
47
+ replies.push format_key_val_response(key, val)
35
48
  end
36
49
  response.reply replies.join "\n"
37
50
  end
38
51
 
39
- def del_key(response)
52
+ def command_del_key(response)
40
53
  key = response.matches[0][0]
41
54
  y = redis.hdel(REDIS_KEY, key)
42
55
  response.reply "Document deleted: #{key}"
43
56
  end
57
+
58
+ def get_values_that_start_with_key(key)
59
+ values = []
60
+ all = redis.hgetall(REDIS_KEY)
61
+ all.each do |all_key, all_val|
62
+ if all_key =~ /^#{key}/
63
+ values.push format_key_val_response(all_key, all_val)
64
+ end
65
+ end
66
+ reply = values.join "\n"
67
+ end
68
+
69
+ def format_key_val_response(all_key, all_val)
70
+ "#{all_key}: #{all_val}"
71
+ end
44
72
  end
45
73
 
46
74
  Lita.register_handler(OnewheelDoc)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'lita-onewheel-doc'
3
- spec.version = '0.1.0'
3
+ spec.version = '1.0.0'
4
4
  spec.authors = ['Andrew Kreps']
5
5
  spec.email = ['andrew.kreps@gmail.com']
6
6
  spec.description = 'Basic key/value store designed for http links.'
@@ -5,24 +5,35 @@ describe Lita::Handlers::OnewheelDoc, lita_handler: true do
5
5
  send_command 'doc one http://one'
6
6
  expect(replies.last).to eq('Documented one as http://one')
7
7
  end
8
+
8
9
  it 'gets a document' do
9
10
  send_command 'doc one http://one'
10
11
  send_command 'doc one'
11
12
  expect(replies.last).to eq('http://one')
12
13
  end
14
+
13
15
  it 'lists documents' do
14
16
  send_command 'doc one http://one'
15
17
  send_command 'doc two http://two'
16
18
  send_command 'doc'
17
19
  expect(replies.last).to eq("one: http://one\ntwo: http://two")
18
20
  end
21
+
19
22
  it 'documents real urls' do
20
23
  send_command 'doc pachinko-endpoints https://shopigniter.atlassian.net/wiki/display/I5/Pachinko+Endpoints'
21
24
  expect(replies.last).to eq('Documented pachinko-endpoints as https://shopigniter.atlassian.net/wiki/display/I5/Pachinko+Endpoints')
22
25
  end
26
+
23
27
  it 'deletes documents' do
24
28
  send_command 'doc one http://one'
25
29
  send_command 'docdel one'
26
30
  expect(replies.last).to eq('Document deleted: one')
27
31
  end
32
+
33
+ it 'finds by parties key' do
34
+ send_command 'doc pacone http://one'
35
+ send_command 'doc pactwo http://two'
36
+ send_command 'doc pac'
37
+ expect(replies.last).to eq("pacone: http://one\npactwo: http://two")
38
+ end
28
39
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-onewheel-doc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kreps