Skip to content

Commit

Permalink
chore: v0.7.0
Browse files Browse the repository at this point in the history
  • Loading branch information
troch committed Oct 11, 2015
1 parent 12a2ac8 commit 6eb0172
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 21 deletions.
10 changes: 10 additions & 0 deletions CHANGELOG.md
@@ -1,3 +1,13 @@
<a name="0.7.0"></a>
# 0.7.0 (2015-10-11)


### Features

* support arrays in query parameters (route-node v0.4.0) ([12a2ac8](https://github.com/router5/router5/commit/12a2ac8))



<a name="0.6.4"></a>
## 0.6.4 (2015-09-15)

Expand Down
38 changes: 30 additions & 8 deletions dist/amd/router5.js
@@ -1,6 +1,6 @@
/**
* @license
* @version 0.6.4
* @version 0.7.0
* The MIT License (MIT)
*
* Copyright (c) 2015 Thomas Roch
Expand Down Expand Up @@ -113,22 +113,44 @@ define('router5', [], function () {
return source.replace(/\\\/$/, '') + '(?:\\/)?';
};

var appendQueryParam = function appendQueryParam(params, param) {
var val = arguments.length <= 2 || arguments[2] === undefined ? '' : arguments[2];

var existingVal = params[param];

if (existingVal === undefined) params[param] = val;else params[param] = Array.isArray(existingVal) ? existingVal.concat(val) : [existingVal, val];

return params;
};

var parseQueryParams = function parseQueryParams(path) {
var searchPart = path.split('?')[1];
if (!searchPart) return {};
return searchPart.split('&').map(function (_) {
return _.split('=');
}).reduce(function (obj, m) {
obj[m[0]] = m[1] === undefined ? '' : m[1];
return obj;
return appendQueryParam(obj, m[0], m[1]);
}, {});
};

var isSerialisable = function isSerialisable(val) {
return val !== undefined && val !== null && val !== '';
var toSerialisable = function toSerialisable(val) {
return val !== undefined && val !== null && val !== '' ? '=' + val : '';
};

var serialise = function serialise(key, val) {
return Array.isArray(val) ? val.map(function (v) {
return serialise(key, v);
}).join('&') : key + toSerialisable(val);
};

var Path = (function () {
_createClass(Path, null, [{
key: 'createPath',
value: function createPath(path) {
return new Path(path);
}
}]);

function Path(path) {
_classCallCheck(this, Path);

Expand Down Expand Up @@ -246,7 +268,7 @@ define('router5', [], function () {
Object.keys(queryParams).filter(function (p) {
return _this3.queryParams.indexOf(p) >= 0;
}).forEach(function (p) {
return match[p] = queryParams[p];
return appendQueryParam(match, p, queryParams[p]);
});

return match;
Expand Down Expand Up @@ -287,7 +309,7 @@ define('router5', [], function () {
var searchPart = this.queryParams.filter(function (p) {
return Object.keys(params).indexOf(p) !== -1;
}).map(function (p) {
return p + (isSerialisable(params[p]) ? '=' + params[p] : '');
return serialise(p, params[p]);
}).join('&');

return base + (searchPart ? '?' + searchPart : '');
Expand Down Expand Up @@ -553,7 +575,7 @@ define('router5', [], function () {
}).filter(function (p) {
return Object.keys(params).indexOf(p) !== -1;
}).map(function (p) {
return p + '=' + params[p];
return Path.serialise(p, params[p]);
}).join('&');

return segments.map(function (segment) {
Expand Down
4 changes: 2 additions & 2 deletions dist/amd/router5.min.js

Large diffs are not rendered by default.

38 changes: 30 additions & 8 deletions dist/browser/router5.js
@@ -1,6 +1,6 @@
/**
* @license
* @version 0.6.4
* @version 0.7.0
* The MIT License (MIT)
*
* Copyright (c) 2015 Thomas Roch
Expand Down Expand Up @@ -113,22 +113,44 @@
return source.replace(/\\\/$/, '') + '(?:\\/)?';
};

var appendQueryParam = function appendQueryParam(params, param) {
var val = arguments.length <= 2 || arguments[2] === undefined ? '' : arguments[2];

var existingVal = params[param];

if (existingVal === undefined) params[param] = val;else params[param] = Array.isArray(existingVal) ? existingVal.concat(val) : [existingVal, val];

return params;
};

var parseQueryParams = function parseQueryParams(path) {
var searchPart = path.split('?')[1];
if (!searchPart) return {};
return searchPart.split('&').map(function (_) {
return _.split('=');
}).reduce(function (obj, m) {
obj[m[0]] = m[1] === undefined ? '' : m[1];
return obj;
return appendQueryParam(obj, m[0], m[1]);
}, {});
};

var isSerialisable = function isSerialisable(val) {
return val !== undefined && val !== null && val !== '';
var toSerialisable = function toSerialisable(val) {
return val !== undefined && val !== null && val !== '' ? '=' + val : '';
};

var serialise = function serialise(key, val) {
return Array.isArray(val) ? val.map(function (v) {
return serialise(key, v);
}).join('&') : key + toSerialisable(val);
};

var Path = (function () {
_createClass(Path, null, [{
key: 'createPath',
value: function createPath(path) {
return new Path(path);
}
}]);

function Path(path) {
_classCallCheck(this, Path);

Expand Down Expand Up @@ -246,7 +268,7 @@
Object.keys(queryParams).filter(function (p) {
return _this3.queryParams.indexOf(p) >= 0;
}).forEach(function (p) {
return match[p] = queryParams[p];
return appendQueryParam(match, p, queryParams[p]);
});

return match;
Expand Down Expand Up @@ -287,7 +309,7 @@
var searchPart = this.queryParams.filter(function (p) {
return Object.keys(params).indexOf(p) !== -1;
}).map(function (p) {
return p + (isSerialisable(params[p]) ? '=' + params[p] : '');
return serialise(p, params[p]);
}).join('&');

return base + (searchPart ? '?' + searchPart : '');
Expand Down Expand Up @@ -553,7 +575,7 @@
}).filter(function (p) {
return Object.keys(params).indexOf(p) !== -1;
}).map(function (p) {
return p + '=' + params[p];
return Path.serialise(p, params[p]);
}).join('&');

return segments.map(function (segment) {
Expand Down
4 changes: 2 additions & 2 deletions dist/browser/router5.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
@@ -1,6 +1,6 @@
{
"name": "router5",
"version": "0.6.4",
"version": "0.7.0",
"description": "An HTML5 router, based on route-node and path-parser",
"main": "dist/commonjs/index.js",
"jsnext:main": "modules/index.js",
Expand Down

0 comments on commit 6eb0172

Please sign in to comment.