de_rjs 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/lib/de_rjs/jquery_generator.rb +16 -5
- data/test/de_rjs_test.rb +3 -240
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eae4de9892c19b5e8f6192db42a2a79723406577
|
4
|
+
data.tar.gz: 9079ab6320e36da5aeca6ac240313d1e451b4569
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 78bd18998d5a272491e345a190c1c131d181fb6d3e8f6844a88d47e559ef6f2803122dec6fb200233e32508c33c62a81705c4264cb2091bfc869cfe7c2824184
|
7
|
+
data.tar.gz: 427622719892e792ae4847b94e6cb948897617482dafa5fac48d485f29a26258e60a83c441467771fd97cf6da692a42157ad18adf9c99ef7631d1753274ee2c4
|
@@ -566,10 +566,6 @@ module DeRjs
|
|
566
566
|
generator = self.class.new(@context, &block)
|
567
567
|
literal("function() { #{generator.to_s} }")
|
568
568
|
end
|
569
|
-
|
570
|
-
def method_missing(method, *arguments)
|
571
|
-
JavaScriptProxy.new(self, method.to_s.camelize)
|
572
|
-
end
|
573
569
|
end
|
574
570
|
end
|
575
571
|
|
@@ -584,15 +580,30 @@ module DeRjs
|
|
584
580
|
klass == JavaScriptProxy
|
585
581
|
end
|
586
582
|
|
583
|
+
def ==(other)
|
584
|
+
raise "haha"
|
585
|
+
end
|
586
|
+
|
587
587
|
private
|
588
588
|
def method_missing(method, *arguments, &block)
|
589
589
|
if method.to_s =~ /(.*)=$/
|
590
|
+
warn(method.to_s, *arguments)
|
590
591
|
assign($1, arguments.first)
|
591
592
|
else
|
593
|
+
warn(method.to_s, *arguments)
|
592
594
|
call("#{method.to_s.camelize(:lower)}", *arguments, &block)
|
593
595
|
end
|
594
596
|
end
|
595
597
|
|
598
|
+
def known_jquery_methods
|
599
|
+
%w(hide show first last)
|
600
|
+
end
|
601
|
+
|
602
|
+
def warn(method, *arguments)
|
603
|
+
return if known_jquery_methods.include? method.to_s
|
604
|
+
::Kernel.puts "#{method} is called via method_missing with args: #{arguments.inspect} at: #{::Kernel.caller.join("\n")}"
|
605
|
+
end
|
606
|
+
|
596
607
|
def call(function, *arguments, &block)
|
597
608
|
append_to_function_chain!("#{function}(#{@generator.send(:arguments_for_call, arguments, block)})")
|
598
609
|
self
|
@@ -789,7 +800,7 @@ module DeRjs
|
|
789
800
|
|
790
801
|
class JavaScriptElementCollectionProxy < JavaScriptCollectionProxy #:nodoc:\
|
791
802
|
def initialize(generator, pattern)
|
792
|
-
super(generator, "#{::JQUERY_VAR}(#{::ActiveSupport::JSON.encode(pattern)})")
|
803
|
+
super(generator, "#{::JQUERY_VAR}(#{::ActiveSupport::JSON.encode(pattern)});")
|
793
804
|
end
|
794
805
|
end
|
795
806
|
end
|
data/test/de_rjs_test.rb
CHANGED
@@ -9,15 +9,6 @@ end
|
|
9
9
|
|
10
10
|
class DeRjsBaseTest < Minitest::Test
|
11
11
|
protected
|
12
|
-
def not_supported
|
13
|
-
skip "not supported"
|
14
|
-
end
|
15
|
-
|
16
|
-
def create_generator
|
17
|
-
block = Proc.new { |*args| yield(*args) if block_given? }
|
18
|
-
DeRjs::JqueryGenerator.new self, &block
|
19
|
-
end
|
20
|
-
|
21
12
|
def generate_js(rjs)
|
22
13
|
rewritten_source = DeRjs::Rewriter.rewrite_rjs(rjs)
|
23
14
|
generator = DeRjs::JqueryGenerator.new(nil) { eval(rewritten_source)}
|
@@ -29,7 +20,6 @@ end
|
|
29
20
|
class DeRjsTest < DeRjsBaseTest
|
30
21
|
def setup
|
31
22
|
super
|
32
|
-
@generator = create_generator
|
33
23
|
ActiveSupport.escape_html_entities_in_json = true
|
34
24
|
end
|
35
25
|
|
@@ -120,32 +110,6 @@ class DeRjsTest < DeRjsBaseTest
|
|
120
110
|
generate_js(%Q{ page.reload })
|
121
111
|
end
|
122
112
|
|
123
|
-
def test_delay
|
124
|
-
not_supported
|
125
|
-
|
126
|
-
@generator.delay(20) do
|
127
|
-
@generator.hide('foo')
|
128
|
-
end
|
129
|
-
|
130
|
-
assert_equal "setTimeout(function() {\n;\njQuery(\"#foo\").hide();\n}, 20000);", @generator.to_s
|
131
|
-
end
|
132
|
-
|
133
|
-
def test_to_s
|
134
|
-
not_supported
|
135
|
-
|
136
|
-
@generator.insert_html(:top, 'element', '<p>This is a test</p>')
|
137
|
-
@generator.insert_html(:bottom, 'element', '<p>This is a test</p>')
|
138
|
-
@generator.remove('foo', 'bar')
|
139
|
-
@generator.replace_html('baz', '<p>This is a test</p>')
|
140
|
-
|
141
|
-
assert_equal <<-EOS.chomp, @generator.to_s
|
142
|
-
jQuery("#element").prepend("\\u003cp\\u003eThis is a test\\u003c/p\\u003e");
|
143
|
-
jQuery("#element").append("\\u003cp\\u003eThis is a test\\u003c/p\\u003e");
|
144
|
-
jQuery("#foo,#bar").remove();
|
145
|
-
jQuery("#baz").html("\\u003cp\\u003eThis is a test\\u003c/p\\u003e");
|
146
|
-
EOS
|
147
|
-
end
|
148
|
-
|
149
113
|
def test_element_access
|
150
114
|
assert_equal %(jQuery("#hello");), generate_js(%Q{ page['hello'] })
|
151
115
|
end
|
@@ -189,12 +153,12 @@ jQuery("#baz").html("\\u003cp\\u003eThis is a test\\u003c/p\\u003e");
|
|
189
153
|
end
|
190
154
|
|
191
155
|
def test_element_proxy_two_deep
|
192
|
-
|
193
|
-
assert_equal %(jQuery("#hello").hide("first").cleanWhitespace();),
|
156
|
+
skip "I don't think this has ever worked"
|
157
|
+
assert_equal %(jQuery("#hello").hide("first").cleanWhitespace();), generate_js(%Q{ page.hide("first").clean_whitespace })
|
194
158
|
end
|
195
159
|
|
196
160
|
def test_select_access
|
197
|
-
assert_equal %(jQuery("div.hello");),
|
161
|
+
assert_equal %(jQuery("div.hello");), generate_js(%Q{ page.select('div.hello') })
|
198
162
|
end
|
199
163
|
|
200
164
|
def test_select_proxy_one_deep
|
@@ -219,25 +183,6 @@ jQuery("#baz").html("\\u003cp\\u003eThis is a test\\u003c/p\\u003e");
|
|
219
183
|
generate_js(%Q{ page.visual_effect(:toggle_appear,"blah" + blah.id) })
|
220
184
|
end
|
221
185
|
|
222
|
-
def test_sortable
|
223
|
-
assert_equal %(Sortable.create("blah", {onUpdate:function(){new Ajax.Request('http://www.example.com/order', {asynchronous:true, evalScripts:true, parameters:Sortable.serialize("blah")})}});),
|
224
|
-
@generator.sortable('blah', :url => { :action => "order" })
|
225
|
-
assert_equal %(Sortable.create("blah", {onUpdate:function(){new Ajax.Request('http://www.example.com/order', {asynchronous:false, evalScripts:true, parameters:Sortable.serialize("blah")})}});),
|
226
|
-
@generator.sortable('blah', :url => { :action => "order" }, :type => :synchronous)
|
227
|
-
end
|
228
|
-
|
229
|
-
def test_draggable
|
230
|
-
assert_equal %(new Draggable("blah", {});),
|
231
|
-
@generator.draggable('blah')
|
232
|
-
end
|
233
|
-
|
234
|
-
def test_drop_receiving
|
235
|
-
assert_equal %(Droppables.add("blah", {onDrop:function(element){new Ajax.Request('http://www.example.com/order', {asynchronous:true, evalScripts:true, parameters:'id=' + encodeURIComponent(element.id)})}});),
|
236
|
-
@generator.drop_receiving('blah', :url => { :action => "order" })
|
237
|
-
assert_equal %(Droppables.add("blah", {onDrop:function(element){new Ajax.Request('http://www.example.com/order', {asynchronous:false, evalScripts:true, parameters:'id=' + encodeURIComponent(element.id)})}});),
|
238
|
-
@generator.drop_receiving('blah', :url => { :action => "order" }, :type => :synchronous)
|
239
|
-
end
|
240
|
-
|
241
186
|
def test_collection_first_and_last
|
242
187
|
js = generate_js(%Q{
|
243
188
|
page.select('p.welcome b').first.hide()
|
@@ -249,190 +194,8 @@ jQuery("p.welcome b").last().show();
|
|
249
194
|
EOS
|
250
195
|
end
|
251
196
|
|
252
|
-
def test_collection_proxy_with_each
|
253
|
-
not_supported
|
254
|
-
|
255
|
-
@generator.select('p.welcome b').each do |value|
|
256
|
-
value.remove_class_name 'selected'
|
257
|
-
end
|
258
|
-
@generator.select('p.welcome b').each do |value, index|
|
259
|
-
@generator.visual_effect :highlight, value
|
260
|
-
end
|
261
|
-
assert_equal <<-EOS.strip, @generator.to_s
|
262
|
-
jQuery("p.welcome b").each(function(value, index) {
|
263
|
-
value.removeClassName("selected");
|
264
|
-
});
|
265
|
-
jQuery("p.welcome b").each(function(value, index) {
|
266
|
-
jQuery("#value").effect("highlight",{});
|
267
|
-
});
|
268
|
-
EOS
|
269
|
-
end
|
270
|
-
|
271
|
-
def test_collection_proxy_on_collect
|
272
|
-
not_supported
|
273
|
-
|
274
|
-
@generator.select('p').collect('a') { |para| para.show }
|
275
|
-
@generator.select('p').collect { |para| para.hide }
|
276
|
-
assert_equal <<-EOS.strip, @generator.to_s
|
277
|
-
var a = jQuery("p").collect(function(value, index) {
|
278
|
-
return value.show();
|
279
|
-
});
|
280
|
-
jQuery("p").collect(function(value, index) {
|
281
|
-
return value.hide();
|
282
|
-
});
|
283
|
-
EOS
|
284
|
-
@generator = create_generator
|
285
|
-
end
|
286
|
-
|
287
|
-
def test_collection_proxy_with_grep
|
288
|
-
not_supported
|
289
|
-
|
290
|
-
@generator.select('p').grep 'a', /^a/ do |value|
|
291
|
-
@generator << '(value.className == "welcome")'
|
292
|
-
end
|
293
|
-
@generator.select('p').grep 'b', /bjQuery/ do |value, index|
|
294
|
-
@generator.call 'alert', value
|
295
|
-
@generator << '(value.className == "welcome")'
|
296
|
-
end
|
297
|
-
|
298
|
-
assert_equal <<-EOS.strip, @generator.to_s
|
299
|
-
var a = jQuery("p").grep(/^a/, function(value, index) {
|
300
|
-
return (value.className == "welcome");
|
301
|
-
});
|
302
|
-
var b = jQuery("p").grep(/bjQuery/, function(value, index) {
|
303
|
-
alert(value);
|
304
|
-
return (value.className == "welcome");
|
305
|
-
});
|
306
|
-
EOS
|
307
|
-
end
|
308
|
-
|
309
|
-
def test_collection_proxy_with_inject
|
310
|
-
not_supported
|
311
|
-
|
312
|
-
@generator.select('p').inject 'a', [] do |memo, value|
|
313
|
-
@generator << '(value.className == "welcome")'
|
314
|
-
end
|
315
|
-
@generator.select('p').inject 'b', nil do |memo, value, index|
|
316
|
-
@generator.call 'alert', memo
|
317
|
-
@generator << '(value.className == "welcome")'
|
318
|
-
end
|
319
|
-
|
320
|
-
assert_equal <<-EOS.strip, @generator.to_s
|
321
|
-
var a = jQuery("p").inject([], function(memo, value, index) {
|
322
|
-
return (value.className == "welcome");
|
323
|
-
});
|
324
|
-
var b = jQuery("p").inject(null, function(memo, value, index) {
|
325
|
-
alert(memo);
|
326
|
-
return (value.className == "welcome");
|
327
|
-
});
|
328
|
-
EOS
|
329
|
-
end
|
330
|
-
|
331
197
|
def test_collection_proxy_with_pluck
|
332
198
|
js = generate_js(%Q{ page.select('p').pluck('a', 'className') })
|
333
199
|
assert_equal %(var a = jQuery("p").pluck("className");), js
|
334
200
|
end
|
335
|
-
|
336
|
-
def test_collection_proxy_with_zip
|
337
|
-
not_supported
|
338
|
-
|
339
|
-
ActionView::Helpers::JavaScriptCollectionProxy.new(@generator, '[1, 2, 3]').zip('a', [4, 5, 6], [7, 8, 9])
|
340
|
-
ActionView::Helpers::JavaScriptCollectionProxy.new(@generator, '[1, 2, 3]').zip('b', [4, 5, 6], [7, 8, 9]) do |array|
|
341
|
-
@generator.call 'array.reverse'
|
342
|
-
end
|
343
|
-
|
344
|
-
assert_equal <<-EOS.strip, @generator.to_s
|
345
|
-
var a = [1, 2, 3].zip([4,5,6], [7,8,9]);
|
346
|
-
var b = [1, 2, 3].zip([4,5,6], [7,8,9], function(array) {
|
347
|
-
return array.reverse();
|
348
|
-
});
|
349
|
-
EOS
|
350
|
-
end
|
351
|
-
|
352
|
-
def test_collection_proxy_with_find_all
|
353
|
-
not_supported
|
354
|
-
|
355
|
-
@generator.select('p').find_all 'a' do |value, index|
|
356
|
-
@generator << '(value.className == "welcome")'
|
357
|
-
end
|
358
|
-
|
359
|
-
assert_equal <<-EOS.strip, @generator.to_s
|
360
|
-
var a = jQuery("p").findAll(function(value, index) {
|
361
|
-
return (value.className == "welcome");
|
362
|
-
});
|
363
|
-
EOS
|
364
|
-
end
|
365
|
-
|
366
|
-
def test_collection_proxy_with_in_groups_of
|
367
|
-
not_supported
|
368
|
-
|
369
|
-
@generator.select('p').in_groups_of('a', 3)
|
370
|
-
@generator.select('p').in_groups_of('a', 3, 'x')
|
371
|
-
assert_equal <<-EOS.strip, @generator.to_s
|
372
|
-
var a = jQuery("p").inGroupsOf(3);
|
373
|
-
var a = jQuery("p").inGroupsOf(3, "x");
|
374
|
-
EOS
|
375
|
-
end
|
376
|
-
|
377
|
-
def test_collection_proxy_with_each_slice
|
378
|
-
not_supported
|
379
|
-
|
380
|
-
@generator.select('p').each_slice('a', 3)
|
381
|
-
@generator.select('p').each_slice('a', 3) do |group, index|
|
382
|
-
group.reverse
|
383
|
-
end
|
384
|
-
|
385
|
-
assert_equal <<-EOS.strip, @generator.to_s
|
386
|
-
var a = jQuery("p").eachSlice(3);
|
387
|
-
var a = jQuery("p").eachSlice(3, function(value, index) {
|
388
|
-
return value.reverse();
|
389
|
-
});
|
390
|
-
EOS
|
391
|
-
end
|
392
|
-
|
393
|
-
#def test_debug_rjs
|
394
|
-
#ActionView::Base.debug_rjs = true
|
395
|
-
#@generator['welcome'].replace_html 'Welcome'
|
396
|
-
#assert_equal "try {\njQuery(\"#welcome\").html(\"Welcome\");\n} catch (e) { alert('RJS error:\\n\\n' + e.toString()); alert('jQuery(\\\"#welcome\\\").html(\\\"Welcome\\\");'); throw e }", @generator.to_s
|
397
|
-
#ensure
|
398
|
-
#ActionView::Base.debug_rjs = false
|
399
|
-
#end
|
400
|
-
|
401
|
-
def test_literal
|
402
|
-
not_supported
|
403
|
-
|
404
|
-
literal = @generator.literal("function() {}")
|
405
|
-
assert_equal "function() {}", ActiveSupport::JSON.encode(literal)
|
406
|
-
assert_equal "", @generator.to_s
|
407
|
-
end
|
408
|
-
|
409
|
-
def test_class_proxy
|
410
|
-
@generator.form.focus('my_field')
|
411
|
-
assert_equal "Form.focus(\"my_field\");", @generator.to_s
|
412
|
-
end
|
413
|
-
|
414
|
-
def test_call_with_block
|
415
|
-
not_supported
|
416
|
-
|
417
|
-
@generator.call(:before)
|
418
|
-
@generator.call(:my_method) do |p|
|
419
|
-
p[:one].show
|
420
|
-
p[:two].hide
|
421
|
-
end
|
422
|
-
@generator.call(:in_between)
|
423
|
-
@generator.call(:my_method_with_arguments, true, "hello") do |p|
|
424
|
-
p[:three].visual_effect(:highlight)
|
425
|
-
end
|
426
|
-
assert_equal "before();\nmy_method(function() { jQuery(\"#one\").show();\njQuery(\"#two\").hide(); });\nin_between();\nmy_method_with_arguments(true, \"hello\", function() { jQuery(\"#three\").visualEffect(\"highlight\"); });", @generator.to_s
|
427
|
-
end
|
428
|
-
|
429
|
-
def test_class_proxy_call_with_block
|
430
|
-
not_supported
|
431
|
-
|
432
|
-
@generator.my_object.my_method do |p|
|
433
|
-
p[:one].show
|
434
|
-
p[:two].hide
|
435
|
-
end
|
436
|
-
assert_equal "MyObject.myMethod(function() { jQuery(\"#one\").show();\njQuery(\"#two\").hide(); });", @generator.to_s
|
437
|
-
end
|
438
201
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: de_rjs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thong Kuah
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|