Skip to content

Instantly share code, notes, and snippets.

@davydog187
Created April 4, 2015 14:06
Show Gist options
  • Save davydog187/dc5b228991c306261d21 to your computer and use it in GitHub Desktop.
Save davydog187/dc5b228991c306261d21 to your computer and use it in GitHub Desktop.
Process url for cip6791
var exampleInputs = [
"http://example.com/",
"http://example.com/#hash",
"http://example.com/#hash?something=hello",
"http://example.com/#hash?something=hello&else=hi"
];
function getHashValueFrom(url, hashIndex, queryStringIndex) {
if (hashIndex === -1) {
return "";
}
if (queryStringIndex === -1) {
return url.substr(hashIndex + 1);
}
return url.substring(hashIndex + 1, queryStringIndex);
}
function getQueryStringFrom(url, hashIndex, queryStringIndex) {
if (queryStringIndex === -1) {
return {};
}
return url.substr(queryStringIndex + 1).split("&").reduce(function(result, current) {
var keyValuePair = current.split("=");
result[keyValuePair[0]] = keyValuePair[1];
return result;
}, {});
}
function getStateFrom(url) {
var queryStringIndex = url.lastIndexOf("?");
var hashIndex = url.lastIndexOf("#");
return {
hash: getHashValueFrom(url, hashIndex, queryStringIndex),
queryString: getQueryStringFrom(url, hashIndex, queryStringIndex)
}
}
exampleInputs.forEach(function(url) {
console.log(getStateFrom(url));
});
@davydog187
Copy link
Author

Output:

$ node process-qs.js
{ hash: '', queryString: {} }
{ hash: 'hash', queryString: {} }
{ hash: 'hash', queryString: { something: 'hello' } }
{ hash: 'hash',
  queryString: { something: 'hello', else: 'hi' } }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment