thinkjs/lib/Lib/Core/Tool.class.js
2013-10-28 10:10:58 +08:00

38 lines
930 B
JavaScript

/**
* 解析cookie
* @param {[type]} str [description]
* @param {[type]} opt [description]
* @return {[type]} [description]
*/
exports.parseCookie = function(str, opt) {
opt = opt || {};
var obj = {}
var pairs = str.split(/[;,] */);
var dec = opt.decode || decodeURIComponent;
pairs.forEach(function(pair) {
var eq_idx = pair.indexOf('=')
// skip things that don't look like key=value
if (eq_idx < 0) {
return;
}
var key = pair.substr(0, eq_idx).trim()
var val = pair.substr(++eq_idx, pair.length).trim();
// quoted values
if ('"' == val[0]) {
val = val.slice(1, -1);
}
// only assign once
if (undefined == obj[key]) {
try {
obj[key] = dec(val);
} catch (e) {
obj[key] = val;
}
}
});
return obj;
};