From bcbc459d2ccb54a0b12dda9b20185017a625f137 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli <thomas@roundcube.net> Date: Fri, 31 Jul 2015 16:02:10 -0400 Subject: [PATCH] Fix regex quoting --- program/js/common.js | 30 +++++++++++++++++++++++++++++- 1 files changed, 29 insertions(+), 1 deletions(-) diff --git a/program/js/common.js b/program/js/common.js index e60a14e..fa0f446 100644 --- a/program/js/common.js +++ b/program/js/common.js @@ -448,7 +448,7 @@ ], icann_addr = 'mailtest\\x40('+icann_domains.join('|')+')', word = '('+atom+'|'+quoted_string+')', - delim = '[,;\s\n]', + delim = '[,;\\s\\n]', local_part = word+'(\\x2e'+word+')*', addr_spec = '(('+local_part+'\\x40'+domain+')|('+icann_addr+'))', reg1 = inline ? new RegExp('(^|<|'+delim+')'+addr_spec+'($|>|'+delim+')', 'i') : new RegExp('^'+addr_spec+'$', 'i'); @@ -654,6 +654,34 @@ }); }; +// function to parse query string into an object +rcube_parse_query = function(query) +{ + if (!query) + return {}; + + var params = {}, e, k, v, + re = /([^&=]+)=?([^&]*)/g, + decodeRE = /\+/g, // Regex for replacing addition symbol with a space + decode = function (str) { return decodeURIComponent(str.replace(decodeRE, ' ')); }; + + query = query.replace(/\?/, ''); + + while (e = re.exec(query)) { + k = decode(e[1]); + v = decode(e[2]); + + if (k.substring(k.length - 2) === '[]') { + k = k.substring(0, k.length - 2); + (params[k] || (params[k] = [])).push(v); + } + else + params[k] = v; + } + + return params; +}; + // This code was written by Tyler Akins and has been placed in the // public domain. It would be nice if you left this header intact. -- Gitblit v1.9.1