Skip to content

Instantly share code, notes, and snippets.

@craiga
Created November 23, 2012 05:42
Show Gist options
  • Save craiga/4134160 to your computer and use it in GitHub Desktop.
Save craiga/4134160 to your computer and use it in GitHub Desktop.
parseCookies.js
/**
* Parse cookies into an object.
*
* @author Craig Anderson <[email protected]>
* @link https://gist.github.com/4134160
*/
function parseCookies(unparsed) {
if(typeof unparsed == "undefined") {
unparsed = document.cookie;
}
var cookies = unparsed.split(/;/m);
var parsed = {};
var numCookies = cookies.length;
for(var cookieIndex = 0; cookieIndex < numCookies; cookieIndex++) {
var cookie = cookies[cookieIndex];
var matches = cookie.match(/^\s*([^=]+)=(.*)$/);
if(matches && matches.length == 3) {
var cookieName = matches[1];
var cookieValue = matches[2];
var crumbs = cookieValue.split(/&/m);
var numCrumbs = crumbs.length;
if(numCrumbs == 1) {
// no crumbs
}
else {
cookieValue = {};
for(var crumbIndex = 0; crumbIndex < numCrumbs; crumbIndex++) {
var crumb = crumbs[crumbIndex];
var matches = crumb.match(/^\s*([^=]+)=(.*)$/);
if(matches && matches.length == 3) {
cookieValue[matches[1]] = matches[2];
}
}
}
parsed[cookieName] = cookieValue;
}
}
return parsed;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment