Skip to content

Commit 265fd0f

Browse files
committed
refactoring
1 parent 87fe250 commit 265fd0f

File tree

3 files changed

+143
-98
lines changed

3 files changed

+143
-98
lines changed

dist/url.js

Lines changed: 78 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -7,72 +7,102 @@
77
})(this, function() {
88
'use strict';
99

10-
function getParams(url) {
11-
url = url || window.location.href;
10+
function _buildParams(query) {
1211
var params = {};
13-
var splitUrl = url.split('?', 2);
14-
var queries = splitUrl.length === 2 ? splitUrl[1].split('&') : [];
15-
queries.forEach(function(query) {
16-
var row = query.split('=', 2);
17-
var key = row[0];
18-
var value = row[1] || '';
1912

20-
if (key.substr(-2) === '[]') {
21-
key = key.substr(0, key.length - 2);
13+
if (query) {
14+
query.split('&').forEach(function(_query) {
15+
var row = _query.split('=', 2);
16+
17+
var key = row[0];
18+
var value = row[1] || '';
19+
20+
if (key.substr(-2) === '[]') {
21+
key = key.substr(0, key.length - 2);
22+
23+
if (params[key] === undefined) {
24+
params[key] = [];
25+
}
2226

23-
if (params[key] === undefined) {
24-
params[key] = [];
27+
params[key].push(decodeURIComponent(value));
28+
} else {
29+
params[key] = decodeURIComponent(value);
2530
}
31+
});
32+
}
2633

27-
params[key].push(decodeURIComponent(value));
28-
} else {
29-
params[key] = decodeURIComponent(value);
30-
}
31-
});
3234
return params;
3335
}
3436

35-
function addParams(url, newParams) {
36-
if (newParams instanceof Object) {
37-
var uri = url.split('?', 2)[0];
38-
var currentParams = getParams(url);
39-
40-
for (var key in newParams) {
41-
if (newParams.hasOwnProperty(key)) {
42-
var value = newParams[key];
43-
44-
if (Array.isArray(value) && value.length) {
45-
if (
46-
currentParams[key] === undefined ||
47-
!Array.isArray(currentParams[key])
48-
) {
49-
currentParams[key] = [];
50-
}
51-
52-
for (var i = 0; i < value.length; i++) {
53-
currentParams[key].push(value[i]);
54-
}
55-
} else {
56-
currentParams[key] = newParams[key];
57-
}
37+
function _buildQuery(params) {
38+
var queries = [];
39+
40+
var _loop = function _loop(key) {
41+
if (params.hasOwnProperty(key)) {
42+
var value = params[key];
43+
44+
if (Array.isArray(value) && value.length) {
45+
value.forEach(function(_value) {
46+
queries.push(''.concat(key, '[]=').concat(_value));
47+
});
48+
} else {
49+
queries.push(''.concat(key, '=').concat(value));
5850
}
5951
}
52+
};
6053

61-
var queries = [];
54+
for (var key in params) {
55+
_loop(key);
56+
}
6257

63-
for (var _key in currentParams) {
64-
var _value = currentParams[_key];
58+
return queries.join('&');
59+
}
60+
61+
function _concat(currentObject, newObject) {
62+
var _loop2 = function _loop2(key) {
63+
if (newObject.hasOwnProperty(key)) {
64+
var value = newObject[key];
6565

66-
if (Array.isArray(_value) && _value.length) {
67-
for (var j = 0; j < _value.length; j++) {
68-
queries.push(''.concat(_key, '[]=').concat(_value[j]));
66+
if (Array.isArray(value) && value.length) {
67+
if (
68+
currentObject[key] === undefined ||
69+
!Array.isArray(currentObject[key])
70+
) {
71+
currentObject[key] = [];
6972
}
73+
74+
value.forEach(function(_value) {
75+
currentObject[key].push(_value);
76+
});
7077
} else {
71-
queries.push(''.concat(_key, '=').concat(_value));
78+
currentObject[key] = newObject[key];
7279
}
7380
}
81+
};
82+
83+
for (var key in newObject) {
84+
_loop2(key);
85+
}
86+
87+
return currentObject;
88+
}
89+
90+
function getParams() {
91+
var url =
92+
arguments.length > 0 && arguments[0] !== undefined
93+
? arguments[0]
94+
: window.location.href;
95+
var splitUrl = url.split('?', 2);
96+
return _buildParams(splitUrl.length === 2 ? splitUrl[1] : '');
97+
}
98+
99+
function addParams(url, newParams) {
100+
if (newParams instanceof Object) {
101+
var uri = url.split('?', 2)[0]; // concatenating current params with new params
102+
103+
var params = _concat(getParams(url), newParams);
74104

75-
url = ''.concat(uri, '?').concat(queries.join('&'));
105+
url = ''.concat(uri, '?').concat(_buildQuery(params));
76106
}
77107

78108
return url;

dist/url.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/url.js

Lines changed: 64 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,88 @@
1-
function getParams(url) {
2-
url = url || window.location.href;
3-
1+
function _buildParams(query) {
42
const params = {};
5-
const splitUrl = url.split('?', 2);
6-
const queries = splitUrl.length === 2 ? splitUrl[1].split('&') : [];
73

8-
queries.forEach(query => {
9-
const row = query.split('=', 2);
4+
if (query) {
5+
query.split('&').forEach(_query => {
6+
const row = _query.split('=', 2);
107

11-
let key = row[0];
12-
let value = row[1] || '';
8+
let key = row[0];
9+
let value = row[1] || '';
1310

14-
if (key.substr(-2) === '[]') {
15-
key = key.substr(0, key.length - 2);
11+
if (key.substr(-2) === '[]') {
12+
key = key.substr(0, key.length - 2);
1613

17-
if (params[key] === undefined) {
18-
params[key] = [];
19-
}
14+
if (params[key] === undefined) {
15+
params[key] = [];
16+
}
2017

21-
params[key].push(decodeURIComponent(value));
22-
} else {
23-
params[key] = decodeURIComponent(value);
24-
}
25-
});
18+
params[key].push(decodeURIComponent(value));
19+
} else {
20+
params[key] = decodeURIComponent(value);
21+
}
22+
});
23+
}
2624

2725
return params;
2826
}
2927

30-
function addParams(url, newParams) {
31-
if (newParams instanceof Object) {
32-
const uri = url.split('?', 2)[0];
33-
const currentParams = getParams(url);
34-
35-
for (let key in newParams) {
36-
if (newParams.hasOwnProperty(key)) {
37-
const value = newParams[key];
38-
39-
if (Array.isArray(value) && value.length) {
40-
if (
41-
currentParams[key] === undefined ||
42-
!Array.isArray(currentParams[key])
43-
) {
44-
currentParams[key] = [];
45-
}
46-
47-
for (let i = 0; i < value.length; i++) {
48-
currentParams[key].push(value[i]);
49-
}
50-
} else {
51-
currentParams[key] = newParams[key];
52-
}
28+
function _buildQuery(params) {
29+
const queries = [];
30+
31+
for (let key in params) {
32+
if (params.hasOwnProperty(key)) {
33+
const value = params[key];
34+
35+
if (Array.isArray(value) && value.length) {
36+
value.forEach(_value => {
37+
queries.push(`${key}[]=${_value}`);
38+
});
39+
} else {
40+
queries.push(`${key}=${value}`);
5341
}
5442
}
43+
}
5544

56-
const queries = [];
45+
return queries.join('&');
46+
}
5747

58-
for (let key in currentParams) {
59-
const value = currentParams[key];
48+
function _concat(currentObject, newObject) {
49+
for (let key in newObject) {
50+
if (newObject.hasOwnProperty(key)) {
51+
const value = newObject[key];
6052

6153
if (Array.isArray(value) && value.length) {
62-
for (let j = 0; j < value.length; j++) {
63-
queries.push(`${key}[]=${value[j]}`);
54+
if (
55+
currentObject[key] === undefined ||
56+
!Array.isArray(currentObject[key])
57+
) {
58+
currentObject[key] = [];
6459
}
60+
61+
value.forEach(_value => {
62+
currentObject[key].push(_value);
63+
});
6564
} else {
66-
queries.push(`${key}=${value}`);
65+
currentObject[key] = newObject[key];
6766
}
6867
}
68+
}
69+
70+
return currentObject;
71+
}
72+
73+
function getParams(url = window.location.href) {
74+
const splitUrl = url.split('?', 2);
75+
76+
return _buildParams(splitUrl.length === 2 ? splitUrl[1] : '');
77+
}
78+
79+
function addParams(url, newParams) {
80+
if (newParams instanceof Object) {
81+
const uri = url.split('?', 2)[0];
82+
// concatenating current params with new params
83+
const params = _concat(getParams(url), newParams);
6984

70-
url = `${uri}?${queries.join('&')}`;
85+
url = `${uri}?${_buildQuery(params)}`;
7186
}
7287

7388
return url;

0 commit comments

Comments
 (0)