From: Mikael Nordfeldth <mmn@hethane.se>
Date: Sat, 7 Mar 2015 00:00:07 +0000 (+0100)
Subject: jQuery cookie plugin updated
X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=bc1d66778457abf137ecacd70924e43a69986fd6;p=quix0rs-gnu-social.git

jQuery cookie plugin updated

Source: https://plugins.jquery.com/cookie/
---

diff --git a/js/extlib/jquery.cookie.js b/js/extlib/jquery.cookie.js
index 9a25dc28d1..c7f3a59b51 100644
--- a/js/extlib/jquery.cookie.js
+++ b/js/extlib/jquery.cookie.js
@@ -1,5 +1,5 @@
 /*!
- * jQuery Cookie Plugin v1.3.1
+ * jQuery Cookie Plugin v1.4.1
  * https://github.com/carhartl/jquery-cookie
  *
  * Copyright 2013 Klaus Hartl
@@ -7,57 +7,65 @@
  */
 (function (factory) {
 	if (typeof define === 'function' && define.amd) {
-		// AMD. Register as anonymous module.
+		// AMD
 		define(['jquery'], factory);
+	} else if (typeof exports === 'object') {
+		// CommonJS
+		factory(require('jquery'));
 	} else {
-		// Browser globals.
+		// Browser globals
 		factory(jQuery);
 	}
 }(function ($) {
 
 	var pluses = /\+/g;
 
+	function encode(s) {
+		return config.raw ? s : encodeURIComponent(s);
+	}
+
 	function decode(s) {
-		if (config.raw) {
-			return s;
-		}
-		try {
-			// If we can't decode the cookie, ignore it, it's unusable.
-			return decodeURIComponent(s.replace(pluses, ' '));
-		} catch(e) {}
+		return config.raw ? s : decodeURIComponent(s);
+	}
+
+	function stringifyCookieValue(value) {
+		return encode(config.json ? JSON.stringify(value) : String(value));
 	}
 
-	function decodeAndParse(s) {
+	function parseCookieValue(s) {
 		if (s.indexOf('"') === 0) {
 			// This is a quoted cookie as according to RFC2068, unescape...
 			s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
 		}
 
-		s = decode(s);
-
 		try {
+			// Replace server-side written pluses with spaces.
+			// If we can't decode the cookie, ignore it, it's unusable.
 			// If we can't parse the cookie, ignore it, it's unusable.
+			s = decodeURIComponent(s.replace(pluses, ' '));
 			return config.json ? JSON.parse(s) : s;
 		} catch(e) {}
 	}
 
+	function read(s, converter) {
+		var value = config.raw ? s : parseCookieValue(s);
+		return $.isFunction(converter) ? converter(value) : value;
+	}
+
 	var config = $.cookie = function (key, value, options) {
 
 		// Write
-		if (value !== undefined) {
+
+		if (value !== undefined && !$.isFunction(value)) {
 			options = $.extend({}, config.defaults, options);
 
 			if (typeof options.expires === 'number') {
 				var days = options.expires, t = options.expires = new Date();
-				t.setDate(t.getDate() + days);
+				t.setTime(+t + days * 864e+5);
 			}
 
-			value = config.json ? JSON.stringify(value) : String(value);
-
 			return (document.cookie = [
-				config.raw ? key : encodeURIComponent(key),
-				'=',
-				config.raw ? value : encodeURIComponent(value),
+				encode(key), '=', stringifyCookieValue(value),
 				options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
 				options.path    ? '; path=' + options.path : '',
 				options.domain  ? '; domain=' + options.domain : '',
@@ -80,12 +88,13 @@
 			var cookie = parts.join('=');
 
 			if (key && key === name) {
-				result = decodeAndParse(cookie);
+				// If second argument (value) is a function it's a converter...
+				result = read(cookie, value);
 				break;
 			}
 
 			// Prevent storing a cookie that we couldn't decode.
-			if (!key && (cookie = decodeAndParse(cookie)) !== undefined) {
+			if (!key && (cookie = read(cookie)) !== undefined) {
 				result[name] = cookie;
 			}
 		}
@@ -96,12 +105,13 @@
 	config.defaults = {};
 
 	$.removeCookie = function (key, options) {
-		if ($.cookie(key) !== undefined) {
-			// Must not alter options, thus extending a fresh object...
-			$.cookie(key, '', $.extend({}, options, { expires: -1 }));
-			return true;
+		if ($.cookie(key) === undefined) {
+			return false;
 		}
-		return false;
+
+		// Must not alter options, thus extending a fresh object...
+		$.cookie(key, '', $.extend({}, options, { expires: -1 }));
+		return !$.cookie(key);
 	};
 
 }));