lita-lunch-order 0.1.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 +17 -0
- data/.travis.yml +8 -0
- data/Gemfile +3 -0
- data/README.md +53 -0
- data/Rakefile +6 -0
- data/lib/lita-lunch-order.rb +12 -0
- data/lib/lita/handlers/lunch_order.rb +63 -0
- data/lita-lunch-order.gemspec +24 -0
- data/locales/en.yml +10 -0
- data/spec/lita/handlers/lunch_order_spec.rb +74 -0
- data/spec/spec_helper.rb +6 -0
- data/templates/.gitkeep +0 -0
- metadata +143 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 7624b7738ef86083727ce1122cb4547ba9144e0a
|
4
|
+
data.tar.gz: 5cf1c5b9f5d4ad77496abbe9e8c1fdb0ab6b000c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b395e2c5fea267d40d90dae4575b7126645cbac0f6f0df70a6b401867fc27e36488fb64b2875c874ec5026034fe6f8028c22da591fc66b194f7772e6b48c01ad
|
7
|
+
data.tar.gz: 0f1da60688746fd22b69b2f1a131c81116138d530f311ca289a46c283e14d7595a3942807de83267c64c417ee37462ad7da08b909d798ef105c9abf1a8dd32cd
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
# lita-lunch-order
|
2
|
+
|
3
|
+
[](https://travis-ci.org/alexinslc/lita-lunch-order)
|
4
|
+
|
5
|
+
A lita handler to help you take lunch orders.
|
6
|
+
|
7
|
+
Populate Lita with a list of your coworker's lunch orders so when you're ready to email / call you have them all ready for you.
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
Add lita-lunch-order to your Lita instance's Gemfile:
|
12
|
+
|
13
|
+
``` ruby
|
14
|
+
gem "lita-lunch-order"
|
15
|
+
```
|
16
|
+
|
17
|
+
## Configuration
|
18
|
+
|
19
|
+
There is no additional configuration.
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
First someone *might* say something like: `Let (me|us) know what (you|you all) (want|would like) for lunch`
|
24
|
+
|
25
|
+
This should reply with: *Now taking orders! To submit an order, please use `lunch-order add ORDER`. Thank You.*
|
26
|
+
|
27
|
+
Adding an Order:
|
28
|
+
```
|
29
|
+
You: lunch-order add Chicken Salad w/ black beans and tomatillo dressing
|
30
|
+
Lita: Chicken Salad w/ black beans and tomatillo dressing has been added.
|
31
|
+
```
|
32
|
+
Removing an Order:
|
33
|
+
```
|
34
|
+
You: lunch-order remove Chicken Salad w/ black beans and tomatillo dressing
|
35
|
+
Lita: Chicken Salad w/ black beans and tomatillo dressing has been removed.
|
36
|
+
```
|
37
|
+
|
38
|
+
Listing all Orders:
|
39
|
+
```
|
40
|
+
You: lunch-order list
|
41
|
+
Lita:
|
42
|
+
Chicken Salad w/ black beans and tomatillo dressing
|
43
|
+
Beef Burrito w/ cheese
|
44
|
+
Cake
|
45
|
+
```
|
46
|
+
|
47
|
+
Resetting or Removing all Orders:
|
48
|
+
```
|
49
|
+
You: lunch-order reset
|
50
|
+
OR
|
51
|
+
You: lunch-order expire
|
52
|
+
Lita: All orders have been removed.
|
53
|
+
```
|
data/Rakefile
ADDED
@@ -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/lunch_order"
|
8
|
+
|
9
|
+
Lita::Handlers::LunchOrder.template_root File.expand_path(
|
10
|
+
File.join("..", "..", "templates"),
|
11
|
+
__FILE__
|
12
|
+
)
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Lita
|
2
|
+
module Handlers
|
3
|
+
class LunchOrder < Handler
|
4
|
+
REDIS_KEY = 'lunch-order'
|
5
|
+
|
6
|
+
# Configure Routes
|
7
|
+
|
8
|
+
# Add an Order (lita lunch-order add ORDER)
|
9
|
+
route(/^lunch-order (?:orders?\s+)?add\s+(.+)$/i, :add_order, command: true, help: { 'lunch-order add ORDER' => 'Add a lunch order' })
|
10
|
+
# Remove an Order (lita lunch-order remove ORDER)
|
11
|
+
route(/^lunch-order (?:orders?\s+)?(?:remove|delete)\s+(.+)$/i, :remove_order, command: true, help: { 'lunch-order remove ORDER' => 'Remove a lunch order' })
|
12
|
+
# List all Orders (lita lunch-order list)
|
13
|
+
route(/^lunch-order (list|show)/i, :list_orders, command: true, help: { 'lunch-order list' => 'List all the known lunch orders' })
|
14
|
+
# Expire orders (remove all orders)
|
15
|
+
route(/^lunch-order (expire|reset)/i, :expire_orders, command: true, help: { 'lunch-order expire' => 'Expire lunch orders (remove all)' })
|
16
|
+
# Tell everyone to begin entering orders
|
17
|
+
route(/let (me|us) know what (you|you all) (want|would like) for lunch/i, :take_orders, command: false)
|
18
|
+
|
19
|
+
def take_orders(response)
|
20
|
+
# Code to notify people to enter orders!
|
21
|
+
response.reply ":fork_and_knife: Now taking orders! To submit an order, please use `lunch-order add ORDER`. Thank You."
|
22
|
+
end
|
23
|
+
|
24
|
+
def list_orders(response)
|
25
|
+
values = redis.smembers(REDIS_KEY)
|
26
|
+
response.reply values.size > 0 ? values.sort.join("\n") : t('.empty')
|
27
|
+
end
|
28
|
+
|
29
|
+
def add_order(response)
|
30
|
+
#response.user + ", " +
|
31
|
+
order = response.matches[0][0].strip
|
32
|
+
return if order.empty?
|
33
|
+
result = redis.sadd(REDIS_KEY, order)
|
34
|
+
response.reply result ? t('.added', order: order) : t('.duplicate', order: order)
|
35
|
+
end
|
36
|
+
|
37
|
+
def remove_order(response)
|
38
|
+
#response.user +
|
39
|
+
order = response.matches[0][0].strip
|
40
|
+
return if order.empty?
|
41
|
+
result = redis.srem(REDIS_KEY, order)
|
42
|
+
response.reply result ? t('.removed', order: order) : t('.unfound')
|
43
|
+
end
|
44
|
+
|
45
|
+
def change_order(response)
|
46
|
+
order = response.matches[0][0].strip
|
47
|
+
return if order.empty?
|
48
|
+
# make sure to allow this.
|
49
|
+
end
|
50
|
+
|
51
|
+
def expire_orders(response)
|
52
|
+
redis.del(REDIS_KEY)
|
53
|
+
response.reply "All orders have been removed!"
|
54
|
+
end
|
55
|
+
|
56
|
+
def reset!
|
57
|
+
redis.del(REDIS_KEY)
|
58
|
+
end
|
59
|
+
|
60
|
+
Lita.register_handler(self)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = "lita-lunch-order"
|
3
|
+
spec.version = "0.1.0"
|
4
|
+
spec.authors = ["Alex Lutz"]
|
5
|
+
spec.email = ["alexinslc@gmail.com"]
|
6
|
+
spec.description = "Lita Handler that can take lunch orders."
|
7
|
+
spec.summary = "Lita Handler that takes lunch orders."
|
8
|
+
spec.homepage = ""
|
9
|
+
spec.license = "MIT"
|
10
|
+
spec.metadata = { "lita_plugin_type" => "handler" }
|
11
|
+
|
12
|
+
spec.files = `git ls-files`.split($/)
|
13
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
14
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
15
|
+
spec.require_paths = ["lib"]
|
16
|
+
|
17
|
+
spec.add_runtime_dependency "lita", ">= 4.6"
|
18
|
+
|
19
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
20
|
+
spec.add_development_dependency "pry-byebug"
|
21
|
+
spec.add_development_dependency "rake"
|
22
|
+
spec.add_development_dependency "rack-test"
|
23
|
+
spec.add_development_dependency "rspec", ">= 3.0.0"
|
24
|
+
end
|
data/locales/en.yml
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Lita::Handlers::LunchOrder, lita_handler: true do
|
4
|
+
before do
|
5
|
+
subject.reset!
|
6
|
+
end
|
7
|
+
|
8
|
+
describe 'list all orders' do
|
9
|
+
it { is_expected.to route_command('lunch-order list').to(:list_orders) }
|
10
|
+
it { is_expected.to route_command('lunch-order show').to(:list_orders) }
|
11
|
+
|
12
|
+
it 'tells you if there are no orders' do
|
13
|
+
send_command('lunch-order list')
|
14
|
+
expect(replies.last).to eq 'No orders added yet.'
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'lists all the known orders' do
|
18
|
+
send_command('lunch-order add bar')
|
19
|
+
send_command('lunch-order add foo')
|
20
|
+
send_command('lunch-order list')
|
21
|
+
expect(replies.last).to eq "bar\nfoo"
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'sorts the orders it knows' do
|
25
|
+
send_command('lunch-order add Zoo')
|
26
|
+
send_command('lunch-order add Avec')
|
27
|
+
send_command('lunch-order add Longs')
|
28
|
+
send_command('lunch-order list')
|
29
|
+
expect(replies.last).to eq "Avec\nLongs\nZoo"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe 'adding an order' do
|
34
|
+
it { is_expected.to route_command('lunch-order add ORDER').to(:add_order) }
|
35
|
+
it { is_expected.to route_command('lunch-order add ORDER').to(:add_order) }
|
36
|
+
it { is_expected.to route_command('lunch-order add ORDER').to(:add_order) }
|
37
|
+
|
38
|
+
it 'will confirm order added' do
|
39
|
+
send_command('lunch-order order add blah')
|
40
|
+
expect(replies.last).to eq 'blah has been added'
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'will not add an empty order' do
|
44
|
+
send_command('lunch-order order add ')
|
45
|
+
expect(replies.last).to eq nil
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'will not add a duplicate order' do
|
49
|
+
send_command('lunch-order order add BurgerCzar')
|
50
|
+
send_command('lunch-order order add BurgerCzar')
|
51
|
+
expect(replies.last).to eq 'I already know about BurgerCzar'
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe 'removing an order' do
|
56
|
+
it { is_expected.to route_command('lunch-order remove ORDER').to(:remove_order) }
|
57
|
+
it { is_expected.to route_command('lunch-order delete ORDER').to(:remove_order) }
|
58
|
+
it { is_expected.to route_command('lunch-order remove ORDER').to(:remove_order) }
|
59
|
+
it { is_expected.to route_command('lunch-order delete ORDER').to(:remove_order) }
|
60
|
+
it { is_expected.to route_command('lunch-order remove ORDER').to(:remove_order) }
|
61
|
+
it { is_expected.to route_command('lunch-order delete ORDER').to(:remove_order) }
|
62
|
+
|
63
|
+
it 'will confirm order removed' do
|
64
|
+
send_command('lunch-order add blah')
|
65
|
+
send_command('lunch-order remove blah')
|
66
|
+
expect(replies.last).to eq 'blah has been removed'
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'will confirm if order cannot be found' do
|
70
|
+
send_command('lunch-order order remove yolo')
|
71
|
+
expect(replies.last).to eq 'You will need to be more specific'
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
require "lita-lunch-order"
|
2
|
+
require "lita/rspec"
|
3
|
+
|
4
|
+
# A compatibility mode is provided for older plugins upgrading from Lita 3. Since this plugin
|
5
|
+
# was generated with Lita 4, the compatibility mode should be left disabled.
|
6
|
+
Lita.version_3_compatibility_mode = false
|
data/templates/.gitkeep
ADDED
File without changes
|
metadata
ADDED
@@ -0,0 +1,143 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lita-lunch-order
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Alex Lutz
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-11-21 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.6'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.6'
|
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: pry-byebug
|
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: rake
|
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: rack-test
|
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'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 3.0.0
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 3.0.0
|
97
|
+
description: Lita Handler that can take lunch orders.
|
98
|
+
email:
|
99
|
+
- alexinslc@gmail.com
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- ".gitignore"
|
105
|
+
- ".travis.yml"
|
106
|
+
- Gemfile
|
107
|
+
- README.md
|
108
|
+
- Rakefile
|
109
|
+
- lib/lita-lunch-order.rb
|
110
|
+
- lib/lita/handlers/lunch_order.rb
|
111
|
+
- lita-lunch-order.gemspec
|
112
|
+
- locales/en.yml
|
113
|
+
- spec/lita/handlers/lunch_order_spec.rb
|
114
|
+
- spec/spec_helper.rb
|
115
|
+
- templates/.gitkeep
|
116
|
+
homepage: ''
|
117
|
+
licenses:
|
118
|
+
- MIT
|
119
|
+
metadata:
|
120
|
+
lita_plugin_type: handler
|
121
|
+
post_install_message:
|
122
|
+
rdoc_options: []
|
123
|
+
require_paths:
|
124
|
+
- lib
|
125
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - ">="
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0'
|
130
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
|
+
requirements:
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '0'
|
135
|
+
requirements: []
|
136
|
+
rubyforge_project:
|
137
|
+
rubygems_version: 2.4.8
|
138
|
+
signing_key:
|
139
|
+
specification_version: 4
|
140
|
+
summary: Lita Handler that takes lunch orders.
|
141
|
+
test_files:
|
142
|
+
- spec/lita/handlers/lunch_order_spec.rb
|
143
|
+
- spec/spec_helper.rb
|