added query string parser and functional tools
This commit is contained in:
34
src/utils.js
34
src/utils.js
@@ -1,3 +1,4 @@
|
||||
import {mapObj} from './funky.js';
|
||||
|
||||
export function noop() {};
|
||||
|
||||
@@ -82,3 +83,36 @@ export function rangeInclusive(start, end) {
|
||||
return range(Math.min(start, end), Math.max(start, end)+1);
|
||||
}
|
||||
|
||||
export function getQueryStringParameters (queryString = document.location.search, separator = '&', assignment = '=') {
|
||||
let parameters = {};
|
||||
|
||||
queryString
|
||||
.replace(/(^\?)/,'')
|
||||
.split(separator)
|
||||
.forEach(pair => {
|
||||
pair = pair.split(assignment);
|
||||
parameters[pair[0]] = pair[1];
|
||||
});
|
||||
|
||||
return parameters;
|
||||
}
|
||||
|
||||
export function getQueryStringObj (queryString = document.location.search, separator = '&', assignment = '=') {
|
||||
return mapObj(getQueryStringParameters(queryString, separator, assignment), parseString);
|
||||
}
|
||||
|
||||
const braced = /^{.*}$/;
|
||||
const bracketed = /^\[.*\]$/;
|
||||
|
||||
export function parseString (str) {
|
||||
return typeof str !== 'string' ? str :
|
||||
str.toLowerCase() === 'true' ? true :
|
||||
str.toLowerCase() === 'false' ? false :
|
||||
str.toLowerCase() === 'null' ? null :
|
||||
str.toLowerCase() === 'undefined' ? undefined :
|
||||
!isNaN(Number(str)) ? Number(str) :
|
||||
braced.test(str) || bracketed.test(str) ? JSON.parse(decodeURIComponent(str)) :
|
||||
str;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user