prism-cli 0.2.0 → 0.3.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/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
|