js-routes 1.1.1 → 1.1.2
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/CHANGELOG.md +4 -0
- data/lib/js_routes/version.rb +1 -1
- data/lib/routes.js +8 -6
- data/lib/routes.js.coffee +9 -4
- data/spec/js_routes/rails_routes_compatibility_spec.rb +7 -3
- data/spec/spec_helper.rb +2 -0
- 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: 3c2993fd7d6c758d98b5f7024ab7c21e2be8f600
|
4
|
+
data.tar.gz: d89427d56039f4f6922d4b508672fccd2aaf1497
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85c514ad1542f4d924611c822475b8e667bc4fcc851ddc0239af229bdab77a99c0a625a452af0900050dd90d517cb3696de9e6c26539ba7701f51d960df3b68e
|
7
|
+
data.tar.gz: ee8810fec35db2da1c0f025663d994eea6d700e45cd4fb3a7c32ac9da2ab68719614dd9cdbccbad6f5ed4e8ebf9a7d9b6fdcc2175b474861387c8d48473ff564
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
## master
|
2
2
|
|
3
|
+
## v1.1.1
|
4
|
+
|
5
|
+
* Bugfix regression in serialisation on blank strings caused by [#155](https://github.com/railsware/js-routes/pull/155/files)
|
6
|
+
|
3
7
|
## v1.1.0
|
4
8
|
|
5
9
|
* Ensure routes are loaded, prior to generating them [#148](https://github.com/railsware/js-routes/pull/148)
|
data/lib/js_routes/version.rb
CHANGED
data/lib/routes.js
CHANGED
@@ -46,13 +46,15 @@ Based on Rails routes of APP_CLASS
|
|
46
46
|
for (key in object) {
|
47
47
|
if (!hasProp.call(object, key)) continue;
|
48
48
|
prop = object[key];
|
49
|
-
if (
|
50
|
-
|
49
|
+
if ((prop == null) && (prefix != null)) {
|
50
|
+
prop = "";
|
51
51
|
}
|
52
|
-
if (
|
53
|
-
|
52
|
+
if (prop != null) {
|
53
|
+
if (prefix != null) {
|
54
|
+
key = prefix + "[" + key + "]";
|
55
|
+
}
|
56
|
+
s.push(this.default_serializer(prop, key));
|
54
57
|
}
|
55
|
-
s.push(this.default_serializer(prop, key));
|
56
58
|
}
|
57
59
|
break;
|
58
60
|
default:
|
@@ -211,7 +213,7 @@ Based on Rails routes of APP_CLASS
|
|
211
213
|
case NodeTypes.CAT:
|
212
214
|
left_part = this.visit(left, parameters, optional);
|
213
215
|
right_part = this.visit(right, parameters, optional);
|
214
|
-
if (optional && !
|
216
|
+
if (optional && (((left[0] === NodeTypes.SYMBOL || left[0] === NodeTypes.CAT) && !left_part) || ((right[0] === NodeTypes.SYMBOL || right[0] === NodeTypes.CAT) && !right_part))) {
|
215
217
|
return "";
|
216
218
|
}
|
217
219
|
return "" + left_part + right_part;
|
data/lib/routes.js.coffee
CHANGED
@@ -26,9 +26,13 @@ Utils =
|
|
26
26
|
for element, i in object
|
27
27
|
s.push @default_serializer(element, prefix + "[]")
|
28
28
|
when "object"
|
29
|
-
for own key, prop of object
|
30
|
-
|
31
|
-
|
29
|
+
for own key, prop of object
|
30
|
+
if !prop? and prefix?
|
31
|
+
prop = ""
|
32
|
+
|
33
|
+
if prop?
|
34
|
+
key = "#{prefix}[#{key}]" if prefix?
|
35
|
+
s.push @default_serializer(prop, key)
|
32
36
|
else
|
33
37
|
if object?
|
34
38
|
s.push "#{encodeURIComponent(prefix.toString())}=#{encodeURIComponent(object.toString())}"
|
@@ -155,7 +159,8 @@ Utils =
|
|
155
159
|
when NodeTypes.CAT
|
156
160
|
left_part = @visit(left, parameters, optional)
|
157
161
|
right_part = @visit(right, parameters, optional)
|
158
|
-
return "" if optional and
|
162
|
+
return "" if optional and (((left[0] == NodeTypes.SYMBOL or left[0] == NodeTypes.CAT) and not left_part) or
|
163
|
+
((right[0] == NodeTypes.SYMBOL or right[0] == NodeTypes.CAT) and not right_part))
|
159
164
|
"#{left_part}#{right_part}"
|
160
165
|
when NodeTypes.SYMBOL
|
161
166
|
value = parameters[left]
|
@@ -145,9 +145,8 @@ describe JsRoutes, "compatibility with Rails" do
|
|
145
145
|
expect(evaljs("Routes.search_path({q: 'hello'})")).to eq(routes.search_path(:q => 'hello'))
|
146
146
|
end
|
147
147
|
|
148
|
-
it "should
|
149
|
-
|
150
|
-
expect(evaljs("Routes.inboxes_path({hello: {world: null}})")).to eq(routes.inboxes_path(:hello => {world: nil}))
|
148
|
+
it "should support nested object null parameters" do
|
149
|
+
expect(evaljs("Routes.inboxes_path({hello: {world: null}})")).to eq(routes.inboxes_path(:hello => {:world => nil}))
|
151
150
|
end
|
152
151
|
end
|
153
152
|
|
@@ -183,6 +182,11 @@ describe JsRoutes, "compatibility with Rails" do
|
|
183
182
|
expect(evaljs("Routes.things_path({optional_id: 5})")).to eq(routes.things_path(:optional_id => 5))
|
184
183
|
end
|
185
184
|
|
185
|
+
context "on nested optional parts" do
|
186
|
+
it "should include everything that is not optional" do
|
187
|
+
expect(evaljs("Routes.classic_path({controller: 'classic', action: 'edit'})")).to eq(routes.classic_path(controller: :classic, action: :edit))
|
188
|
+
end
|
189
|
+
end
|
186
190
|
end
|
187
191
|
end
|
188
192
|
|
data/spec/spec_helper.rb
CHANGED
@@ -97,6 +97,8 @@ def draw_routes
|
|
97
97
|
resources :things
|
98
98
|
end
|
99
99
|
|
100
|
+
get "/:controller(/:action(/:id))" => "classic#classic", :as => :classic
|
101
|
+
|
100
102
|
get "/other_optional/(:optional_id)" => "foo#foo", :as => :foo
|
101
103
|
|
102
104
|
get 'books/*section/:title' => 'books#show', :as => :book
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: js-routes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bogdan Gusiev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
11
|
+
date: 2015-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|