prism-cli 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/build/prism.js +0 -4
- data/src/prism.rb +46 -28
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6b42693d9f9891a549d9ad40045572a87a4b64479e685d5228ed803b2a587177
|
4
|
+
data.tar.gz: fa3187c76f76cdd80f8af5b8cd49a5a9e23980e74e8aba77f4bf8bf0ba6e9a58
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96659210b1e7808f118938642f988f279ca79c0227f615b5914cdf304b7436b5e1b6157e7b5e7fe8f685d7d26adb8ecde1fac3c7b99753c3bc2e566dc62e9e1d
|
7
|
+
data.tar.gz: e9e5b95812026f315e3d73b92fb3d50630aa851fb82e45c4c0984ca0850c81bc6dc747da85a33bc2cf73c4805b9c4cb1daa5f7363fb9a0e072fcf645e436c342
|
data/build/prism.js
CHANGED
data/src/prism.rb
CHANGED
@@ -23,11 +23,7 @@ module Prism
|
|
23
23
|
|
24
24
|
instance = Prism.instances[message["instance"]]
|
25
25
|
|
26
|
-
|
27
|
-
instance.send(message["type"], *message["args"])
|
28
|
-
else
|
29
|
-
raise "Component #{instance.class} has no method ##{message["type"]}"
|
30
|
-
end
|
26
|
+
instance.process(message)
|
31
27
|
end
|
32
28
|
|
33
29
|
def event(eventJSON, id)
|
@@ -191,14 +187,13 @@ module Prism
|
|
191
187
|
end
|
192
188
|
|
193
189
|
result[:on] ||= {}
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
result[:on][:scroll] = options[:onScroll].to_hash if options[:onScroll]
|
190
|
+
|
191
|
+
options.each do |key, value|
|
192
|
+
key_as_string = key.to_s
|
193
|
+
next unless key_as_string.start_with?('on')
|
194
|
+
event_name = key_as_string.sub('on', '').downcase
|
195
|
+
result[:on][event_name] = _register_handler(value)
|
196
|
+
end
|
202
197
|
|
203
198
|
if options[:on]
|
204
199
|
event_handlers = {}
|
@@ -219,18 +214,20 @@ module Prism
|
|
219
214
|
end
|
220
215
|
|
221
216
|
def call(method_name, *args)
|
222
|
-
|
223
|
-
EventHandler.new(object_id, method_name).with(*args)
|
217
|
+
EventHandler.new(self, method_name).with(*args)
|
224
218
|
end
|
225
219
|
|
226
220
|
def stop_propagation
|
227
|
-
|
228
|
-
EventHandler.new(object_id, nil).stop_propagation
|
221
|
+
EventHandler.new(self, method_name).stop_propagation
|
229
222
|
end
|
230
223
|
|
231
224
|
def prevent_default
|
232
|
-
|
233
|
-
|
225
|
+
EventHandler.new(self, method_name).prevent_default
|
226
|
+
end
|
227
|
+
|
228
|
+
def _register_handler(handler)
|
229
|
+
Prism.instances[handler.id] = handler # TODO - this is a memory leak
|
230
|
+
handler.to_hash
|
234
231
|
end
|
235
232
|
|
236
233
|
def render
|
@@ -239,10 +236,11 @@ module Prism
|
|
239
236
|
end
|
240
237
|
|
241
238
|
class EventHandler
|
242
|
-
attr_reader :method_name
|
239
|
+
attr_reader :method_name, :id
|
243
240
|
|
244
|
-
def initialize(
|
245
|
-
@
|
241
|
+
def initialize(instance, method_name, args = [], options = {})
|
242
|
+
@instance = instance
|
243
|
+
@id = self.object_id
|
246
244
|
@method_name = method_name
|
247
245
|
@args = args
|
248
246
|
@options = {prevent_default: false, stop_propagation: false}.merge(options)
|
@@ -251,30 +249,50 @@ module Prism
|
|
251
249
|
def with(*additionalArgs)
|
252
250
|
new_args = additionalArgs.map { |a| {type: :constant, value: a} }
|
253
251
|
|
254
|
-
EventHandler.new(@
|
252
|
+
EventHandler.new(@instance, method_name, @args + new_args, @options)
|
255
253
|
end
|
256
254
|
|
257
255
|
def with_event
|
258
|
-
EventHandler.new(@
|
256
|
+
EventHandler.new(@instance, method_name, @args + [{type: :event}], @options)
|
259
257
|
end
|
260
258
|
|
261
259
|
def with_event_data(*property_names)
|
262
260
|
new_args = property_names.map { |item| {type: :event_data, key: item } }
|
263
261
|
|
264
|
-
EventHandler.new(@
|
262
|
+
EventHandler.new(@instance, method_name, @args + new_args, @options)
|
265
263
|
end
|
266
264
|
|
267
265
|
def with_target_data(*items)
|
268
266
|
target_args = items.map { |item| {type: :target_data, key: item } }
|
269
|
-
EventHandler.new(@
|
267
|
+
EventHandler.new(@instance, method_name, @args + target_args, @options)
|
270
268
|
end
|
271
269
|
|
272
270
|
def prevent_default
|
273
|
-
EventHandler.new(@
|
271
|
+
EventHandler.new(@instance, method_name, @args, @options.merge(prevent_default: true))
|
274
272
|
end
|
275
273
|
|
276
274
|
def stop_propagation
|
277
|
-
EventHandler.new(@
|
275
|
+
EventHandler.new(@instance, method_name, @args, @options.merge(stop_propagation: true))
|
276
|
+
end
|
277
|
+
|
278
|
+
def process(message)
|
279
|
+
call_args = []
|
280
|
+
message_args = message["args"]
|
281
|
+
|
282
|
+
@args.each do |arg|
|
283
|
+
case arg[:type]
|
284
|
+
when :constant
|
285
|
+
call_args << arg[:value]
|
286
|
+
else
|
287
|
+
call_args << message_args.shift
|
288
|
+
end
|
289
|
+
end
|
290
|
+
|
291
|
+
if @instance.respond_to? message["type"]
|
292
|
+
@instance.send(message["type"], *call_args)
|
293
|
+
else
|
294
|
+
raise "Component #{@instance.class} has no method ##{message["type"]}"
|
295
|
+
end
|
278
296
|
end
|
279
297
|
|
280
298
|
def to_hash
|