de_rjs 0.2.2 → 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/lib/de_rjs/jquery_generator.rb +1 -1
- data/lib/de_rjs/rewriter/erbify.rb +17 -9
- data/test/de_rjs_test.rb +15 -12
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: da7377a69fb9bcc6c69b25e0972f8fdfa51af1d9
|
4
|
+
data.tar.gz: 6ea98789b3bb597dbdf98c457975f2002f77cdac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 15564eabf6d2a638cfadab4da2671d9f6a5d915c02d0aee68f6dcf0959c0d782829b7cf1516631228bcf41dc8c42cfcb032d77d810bf114ec035832bd3e51fe0
|
7
|
+
data.tar.gz: 64264098fb4c161a45aaea42faa042ec8681f8085b039eaf4862d31c7f96f6afacacb960cf10e6dc460d349b6009930e0d11f99e2da5ffd87c4883d35498d4e2
|
@@ -134,7 +134,7 @@ module DeRjs
|
|
134
134
|
when String, Symbol, NilClass
|
135
135
|
JavaScriptElementProxy.new(self, id)
|
136
136
|
else
|
137
|
-
JavaScriptElementProxy.new(self,
|
137
|
+
JavaScriptElementProxy.new(self, ActionView::RecordIdentifier.dom_id(id))
|
138
138
|
end
|
139
139
|
end
|
140
140
|
|
@@ -64,16 +64,8 @@ module DeRjs
|
|
64
64
|
end
|
65
65
|
|
66
66
|
# e.g. page["sgfg"] or page["wat_#{@id}"]
|
67
|
-
#
|
68
|
-
# But this will raise when it encounters e.g. page[@var] or page[Bunny.new]
|
69
|
-
# While this is NOT accurate, throwing an error seems better than trying to evaluating
|
70
|
-
# a turing complete statement, and causing subtle failures downstream
|
71
67
|
def rewrite_square_bracket(receiver_node, method_name, *arg_nodes)
|
72
|
-
|
73
|
-
raise MustTranslateManually, "Unable to compute type of expression statically:#{arg_nodes.first.inspect}\n -" \
|
74
|
-
"`def id[]` supports String, Symbol, NilClass or something that `dom_id` can understand"
|
75
|
-
end
|
76
|
-
rewrite_to_erb_unless_static(arg_nodes.shift)
|
68
|
+
rewrite_dom_id(arg_nodes.shift)
|
77
69
|
end
|
78
70
|
|
79
71
|
# *options_for_render
|
@@ -88,6 +80,22 @@ module DeRjs
|
|
88
80
|
insert_after id_arg.loc.expression, " %>}"
|
89
81
|
end
|
90
82
|
|
83
|
+
def rewrite_dom_id(id_arg)
|
84
|
+
return if [:str, :sym].include?(id_arg.type)
|
85
|
+
if id_arg.type == :dstr || is_dom_id_call?(id_arg)
|
86
|
+
insert_before id_arg.loc.expression, "%q{<%= "
|
87
|
+
insert_after id_arg.loc.expression, " %>}"
|
88
|
+
else
|
89
|
+
insert_before id_arg.loc.expression, "%q{<%= dom_id("
|
90
|
+
insert_after id_arg.loc.expression, ") %>}"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def is_dom_id_call?(arg_node)
|
95
|
+
array = arg_node.to_a
|
96
|
+
array[0..1] == [nil, :dom_id] #&& array.size == 3
|
97
|
+
end
|
98
|
+
|
91
99
|
def rewrite_options_for_render(arg_nodes)
|
92
100
|
return if arg_nodes.size == 1 && arg_nodes.first.type == :str
|
93
101
|
insert_before arg_nodes.first.loc.expression, "%q{<%= escape_javascript(render("
|
data/test/de_rjs_test.rb
CHANGED
@@ -151,23 +151,26 @@ jQuery("#baz").html("\\u003cp\\u003eThis is a test\\u003c/p\\u003e");
|
|
151
151
|
end
|
152
152
|
|
153
153
|
def test_element_access_on_variable
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
154
|
+
assert_equal %(jQuery("#<%= dom_id(@var) %>");), generate_js(%Q{ page[@var] })
|
155
|
+
assert_equal %(jQuery("#<%= dom_id(@var) %>").hide();), generate_js(%Q{ page[@var].hide })
|
156
|
+
end
|
157
|
+
|
158
|
+
def test_element_access_on_interpolated_string
|
159
|
+
assert_equal %q(jQuery("#<%= "hello#{@var}" %>");), generate_js(%q{ page["hello#{@var}"] })
|
160
|
+
assert_equal %q(jQuery("#<%= "hello#{@var}" %>").hide();), generate_js(%q{page["hello#{@var}"].hide })
|
160
161
|
end
|
161
162
|
|
162
163
|
def test_element_access_on_records
|
163
|
-
|
164
|
-
|
165
|
-
end
|
166
|
-
assert_raises DeRjs::Rewriter::Erbify::MustTranslateManually do
|
167
|
-
assert_equal %(jQuery("#<%= Bunny.new %>");), generate_js(%Q{ page[Bunny.new] })
|
168
|
-
end
|
164
|
+
assert_equal %(jQuery("#<%= dom_id(Bunny.new(:id => 5)) %>");), generate_js(%Q{ page[Bunny.new(:id => 5)] })
|
165
|
+
assert_equal %(jQuery("#<%= dom_id(Bunny.new) %>");), generate_js(%Q{ page[Bunny.new] })
|
169
166
|
end
|
170
167
|
|
168
|
+
def test_element_access_on_dom_id
|
169
|
+
assert_equal %(jQuery("#<%= dom_id(Bunny.new(:id => 5)) %>");), generate_js(%Q{ page[dom_id(Bunny.new(:id => 5))] })
|
170
|
+
assert_equal %(jQuery("#<%= dom_id(Bunny.new) %>");), generate_js(%Q{ page[dom_id(Bunny.new)] })
|
171
|
+
|
172
|
+
assert_equal %(jQuery("#<%= dom_id(dom_id(Bunny.new) + evil) %>");), generate_js(%Q{ page[dom_id(Bunny.new) + evil] })
|
173
|
+
end
|
171
174
|
|
172
175
|
def test_element_proxy_one_deep
|
173
176
|
assert_equal %(jQuery("#hello").hide();), generate_js(%Q{ page['hello'].hide })
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: de_rjs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thong Kuah
|
@@ -83,7 +83,8 @@ files:
|
|
83
83
|
- test/abstract_unit.rb
|
84
84
|
- test/de_rjs_test.rb
|
85
85
|
homepage: http://github.com/kuahyeow/de_rjs
|
86
|
-
licenses:
|
86
|
+
licenses:
|
87
|
+
- MIT
|
87
88
|
metadata: {}
|
88
89
|
post_install_message:
|
89
90
|
rdoc_options: []
|