mobb 0.3.1 → 0.4.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 +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
|