lita-key-value 0.0.2 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +16 -0
- data/lib/lita/handlers/key_value.rb +37 -13
- data/lita-key-value.gemspec +1 -1
- data/spec/lita/handlers/key_value_spec.rb +18 -0
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 257372e9468420b3569c6af465d25512effca21a
|
4
|
+
data.tar.gz: 9dc868fc7a438589453397d99564703625cb2030
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c2d425fea4f3378cb31a03c50f3ad43a193e01c8c114573a08fe2f5442bb4eb4737cd683495cae0cee8c421de3a4444656bdd417b3670b34ccedb12d768c1cb
|
7
|
+
data.tar.gz: 5c16594bf5c5fdcfa8cb90074f87ff025a09f9859a30cfa7da91ba94c1584e514ad4fad0a4bb6bc0abef0d8420c568cad9ff7c97d439d88fb6960894def3fa66
|
data/README.md
CHANGED
@@ -15,6 +15,22 @@ Add lita-key-value to your Lita instance's Gemfile:
|
|
15
15
|
gem "lita-key-value"
|
16
16
|
```
|
17
17
|
|
18
|
+
## Configuration
|
19
|
+
|
20
|
+
### Optional attributes
|
21
|
+
|
22
|
+
* `key_pattern` (Regexp) - Determines what Lita will recognize as a valid key. Default: `/[\w\._]+/`.
|
23
|
+
* `key_normalizer` (Proc) - A custom callable that determines how each key will be normalized before being stored in Redis. The proc should take one argument, the key as matched via regular expression, and return one value, the normalized version of the key.
|
24
|
+
|
25
|
+
### Example
|
26
|
+
|
27
|
+
``` ruby
|
28
|
+
Lita.configure do |config|
|
29
|
+
config.handlers.key_value.key_pattern = /[\w-]+/
|
30
|
+
config.handlers.key_value.key_normalizer = proc { |key| "~#{key}~" }
|
31
|
+
end
|
32
|
+
```
|
33
|
+
|
18
34
|
## Usage
|
19
35
|
|
20
36
|
Set a key:
|
@@ -6,21 +6,35 @@ module Lita
|
|
6
6
|
REDIS_KEY = "kv"
|
7
7
|
KEY_PATTERN = /[\w\._]+/
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
def self.default_config(config)
|
10
|
+
config.key_pattern = nil
|
11
|
+
config.key_normalizer = nil
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.define_routes(pattern)
|
15
|
+
route(/^kv\s+set\s+(#{pattern})\s+(.+)/i, :set, command: true, help: {
|
16
|
+
"kv set KEY VALUE" => "Set KEY to VALUE."
|
17
|
+
})
|
18
|
+
|
19
|
+
route(/^kv\s+get\s+(#{pattern})/i, :get, command: true, help: {
|
20
|
+
"kv get KEY" => "Get the value of KEY."
|
21
|
+
})
|
12
22
|
|
13
|
-
|
14
|
-
|
15
|
-
|
23
|
+
route(/^kv\s+delete\s+(#{pattern})/i, :delete, command: true, help: {
|
24
|
+
"kv delete KEY" => "Delete KEY."
|
25
|
+
})
|
16
26
|
|
17
|
-
|
18
|
-
|
19
|
-
|
27
|
+
route(/^kv\s+list/i, :list, command: true, help: {
|
28
|
+
"kv list" => "List all keys."
|
29
|
+
})
|
30
|
+
end
|
31
|
+
|
32
|
+
on :loaded, :define_routes
|
20
33
|
|
21
|
-
|
22
|
-
|
23
|
-
|
34
|
+
def define_routes(payload)
|
35
|
+
pattern = config.key_pattern || KEY_PATTERN
|
36
|
+
self.class.define_routes(pattern.source)
|
37
|
+
end
|
24
38
|
|
25
39
|
def set(response)
|
26
40
|
key, value = response.matches.first
|
@@ -62,8 +76,18 @@ module Lita
|
|
62
76
|
|
63
77
|
private
|
64
78
|
|
79
|
+
def config
|
80
|
+
Lita.config.handlers.key_value
|
81
|
+
end
|
82
|
+
|
65
83
|
def normalize_key(key)
|
66
|
-
|
84
|
+
normalizer = config.key_normalizer
|
85
|
+
|
86
|
+
if normalizer.respond_to?(:call)
|
87
|
+
normalizer.call(key)
|
88
|
+
else
|
89
|
+
key.to_s.downcase.strip
|
90
|
+
end
|
67
91
|
end
|
68
92
|
end
|
69
93
|
|
data/lita-key-value.gemspec
CHANGED
@@ -47,4 +47,22 @@ describe Lita::Handlers::KeyValue, lita_handler: true do
|
|
47
47
|
expect(replies.last).to eq("No keys are stored.")
|
48
48
|
end
|
49
49
|
end
|
50
|
+
|
51
|
+
context "with a custom key handler and normalizer" do
|
52
|
+
before do
|
53
|
+
Lita.config.handlers.key_value.tap do |config|
|
54
|
+
config.key_pattern = /[\w-]+/
|
55
|
+
config.key_normalizer = proc { |key| "~#{key}~" }
|
56
|
+
end
|
57
|
+
|
58
|
+
described_class.routes.clear
|
59
|
+
subject.define_routes({})
|
60
|
+
end
|
61
|
+
|
62
|
+
it "allows a custom key pattern and normalizer" do
|
63
|
+
send_command("kv set hello-world it works")
|
64
|
+
send_command("kv get hello-world")
|
65
|
+
expect(replies.last).to eq("it works")
|
66
|
+
end
|
67
|
+
end
|
50
68
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-key-value
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jimmy Cuadra
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lita
|
@@ -140,4 +140,3 @@ summary: A Lita handler for storing snippets of text.
|
|
140
140
|
test_files:
|
141
141
|
- spec/lita/handlers/key_value_spec.rb
|
142
142
|
- spec/spec_helper.rb
|
143
|
-
has_rdoc:
|