mobb 0.3.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/examples/slack_bot.rb +14 -0
- data/lib/mobb/base.rb +58 -6
- data/lib/mobb/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: febcad507b908eb89cc3a74a26787e1d7d216157bb6d24e4bee947308a781fab
|
4
|
+
data.tar.gz: 7a952215c219f37bb24e02606b0e36daba75c240e19ff0f2ca2f0e11dfab3e45
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1bbff647c951289f4de76e6739a1dce400f5ad68ca671c93c43563b1b7f585730c0963e47fe2e32e8d8e3834de932ec8ec60b82843a33c733aa4f98c7b745543
|
7
|
+
data.tar.gz: a141458e8442486f8729d3debbc1555e0a71d7fe02cc1ac7eecad20ea3beeb1b169c1cc0e7d07e062cfca187ff1306a81ca283ef15f3657168877f80e1d05016
|
data/examples/slack_bot.rb
CHANGED
@@ -3,6 +3,20 @@ require 'mobb'
|
|
3
3
|
set :service, 'slack'
|
4
4
|
set :name, "example bot"
|
5
5
|
|
6
|
+
before do
|
7
|
+
puts "=========="
|
8
|
+
puts "before filter"
|
9
|
+
puts @env.body
|
10
|
+
puts "=========="
|
11
|
+
end
|
12
|
+
|
13
|
+
after do
|
14
|
+
puts "=========="
|
15
|
+
puts "after filter"
|
16
|
+
puts @body
|
17
|
+
puts "=========="
|
18
|
+
end
|
19
|
+
|
6
20
|
on "hello" do
|
7
21
|
"Hi! I'm #{settings.name}"
|
8
22
|
end
|
data/lib/mobb/base.rb
CHANGED
@@ -71,11 +71,15 @@ module Mobb
|
|
71
71
|
# TODO: encode input messages
|
72
72
|
|
73
73
|
invoke do
|
74
|
-
|
74
|
+
filter! :before
|
75
75
|
handle_event
|
76
76
|
end
|
77
77
|
ensure
|
78
|
-
|
78
|
+
begin
|
79
|
+
filter! :after
|
80
|
+
rescue ::Exception => boom
|
81
|
+
# TODO: invoke { handle_exception!(boom) }
|
82
|
+
end
|
79
83
|
end
|
80
84
|
|
81
85
|
def invoke
|
@@ -93,6 +97,17 @@ module Mobb
|
|
93
97
|
nil
|
94
98
|
end
|
95
99
|
|
100
|
+
def filter!(type, base = settings)
|
101
|
+
filter! type, base.superclass if base.superclass.respond_to?(:filters)
|
102
|
+
base.filters[type].each { |signature|
|
103
|
+
# TODO: Refactor compile! and process_event to change conditions in a hash (e,g, { source_cond: [], dest_cond: [] })
|
104
|
+
pattern = signature.first
|
105
|
+
source_conditions = signature[2]
|
106
|
+
wrapper = signature[1]
|
107
|
+
process_event(pattern, source_conditions, wrapper)
|
108
|
+
}
|
109
|
+
end
|
110
|
+
|
96
111
|
def handle_event(base = settings, passed_block = nil)
|
97
112
|
if responds = base.events[@env.event_type]
|
98
113
|
responds.each do |pattern, block, source_conditions, dest_conditions|
|
@@ -116,9 +131,9 @@ module Mobb
|
|
116
131
|
|
117
132
|
case res
|
118
133
|
when ::Mobb::Matcher::Matched
|
119
|
-
yield(self, *(res.matched))
|
134
|
+
block ? block[self, *(res.matched)] : yield(self, *(res.matched))
|
120
135
|
when TrueClass
|
121
|
-
|
136
|
+
block ? block[self] : yield(self)
|
122
137
|
else
|
123
138
|
nil
|
124
139
|
end
|
@@ -142,10 +157,11 @@ module Mobb
|
|
142
157
|
/src\/kernel\/bootstrap\/[A-Z]/ # maglev kernel files
|
143
158
|
]
|
144
159
|
|
145
|
-
attr_reader :events
|
160
|
+
attr_reader :events, :filters
|
146
161
|
|
147
162
|
def reset!
|
148
163
|
@events = {}
|
164
|
+
@filters = { before: [], after: [] }
|
149
165
|
@source_conditions = []
|
150
166
|
@dest_conditions = []
|
151
167
|
@extensions = []
|
@@ -163,6 +179,18 @@ module Mobb
|
|
163
179
|
self
|
164
180
|
end
|
165
181
|
|
182
|
+
def before(pattern = /.*/, **options, &block)
|
183
|
+
add_filter(:before, pattern, options, &block)
|
184
|
+
end
|
185
|
+
|
186
|
+
def after(pattern = /.*/, **options, &block)
|
187
|
+
add_filter(:after, pattern, options, &block)
|
188
|
+
end
|
189
|
+
|
190
|
+
def add_filter(type, pattern = /.*/, **options, &block)
|
191
|
+
filters[type] << compile!(type, pattern, options, &block)
|
192
|
+
end
|
193
|
+
|
166
194
|
def receive(pattern, options = {}, &block) event(:message, pattern, options, &block); end
|
167
195
|
alias :on :receive
|
168
196
|
|
@@ -189,6 +217,8 @@ module Mobb
|
|
189
217
|
compile(pattern, options)
|
190
218
|
when :ticker
|
191
219
|
compile_cron(pattern, at)
|
220
|
+
else
|
221
|
+
compile(pattern, options)
|
192
222
|
end
|
193
223
|
unbound_method = generate_method("#{type}", &block)
|
194
224
|
source_conditions, @source_conditions = @source_conditions, []
|
@@ -438,7 +468,7 @@ module Mobb
|
|
438
468
|
end
|
439
469
|
|
440
470
|
delegate :receive, :on, :every, :cron,
|
441
|
-
:set, :enable, :disable, :clear,
|
471
|
+
:set, :enable, :disable, :clear, :before, :after,
|
442
472
|
:helpers, :register
|
443
473
|
|
444
474
|
class << self
|
@@ -447,4 +477,26 @@ module Mobb
|
|
447
477
|
|
448
478
|
self.target = Application
|
449
479
|
end
|
480
|
+
|
481
|
+
# Create a new Mobb application; the block is evaluated in the class scope.
|
482
|
+
def self.new(base = Base, &block)
|
483
|
+
base = Class.new(base)
|
484
|
+
base.class_eval(&block) if block_given?
|
485
|
+
base
|
486
|
+
end
|
487
|
+
|
488
|
+
# Extend the top-level DSL with the modules provided.
|
489
|
+
def self.register(*extensions, &block)
|
490
|
+
Delegator.target.register(*extensions, &block)
|
491
|
+
end
|
492
|
+
|
493
|
+
# Include the helper modules provided in Mobb's request context.
|
494
|
+
def self.helpers(*extensions, &block)
|
495
|
+
Delegator.target.helpers(*extensions, &block)
|
496
|
+
end
|
497
|
+
|
498
|
+
# Use the middleware for classic applications.
|
499
|
+
def self.use(*args, &block)
|
500
|
+
Delegator.target.use(*args, &block)
|
501
|
+
end
|
450
502
|
end
|
data/lib/mobb/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mobb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kinoppyd
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: repp
|