scratch – Blame information for rev 125

Subversion Repositories:
Rev:
Rev Author Line No. Line
58 office 1 /*!
125 office 2 * JavaScript Cookie v2.1.4
58 office 3 * https://github.com/js-cookie/js-cookie
4 *
5 * Copyright 2006, 2015 Klaus Hartl & Fagner Brack
6 * Released under the MIT license
7 */
8 ;(function (factory) {
9 var registeredInModuleLoader = false;
10 if (typeof define === 'function' && define.amd) {
11 define(factory);
12 registeredInModuleLoader = true;
13 }
14 if (typeof exports === 'object') {
15 module.exports = factory();
16 registeredInModuleLoader = true;
17 }
18 if (!registeredInModuleLoader) {
19 var OldCookies = window.Cookies;
20 var api = window.Cookies = factory();
21 api.noConflict = function () {
22 window.Cookies = OldCookies;
23 return api;
24 };
25 }
26 }(function () {
27 function extend () {
28 var i = 0;
29 var result = {};
30 for (; i < arguments.length; i++) {
31 var attributes = arguments[ i ];
32 for (var key in attributes) {
33 result[key] = attributes[key];
34 }
35 }
36 return result;
37 }
38  
39 function init (converter) {
40 function api (key, value, attributes) {
41 var result;
42 if (typeof document === 'undefined') {
43 return;
44 }
45  
46 // Write
47  
48 if (arguments.length > 1) {
49 attributes = extend({
50 path: '/'
51 }, api.defaults, attributes);
52  
53 if (typeof attributes.expires === 'number') {
54 var expires = new Date();
55 expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);
56 attributes.expires = expires;
57 }
58  
125 office 59 // We're using "expires" because "max-age" is not supported by IE
60 attributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';
61  
58 office 62 try {
63 result = JSON.stringify(value);
64 if (/^[\{\[]/.test(result)) {
65 value = result;
66 }
67 } catch (e) {}
68  
69 if (!converter.write) {
70 value = encodeURIComponent(String(value))
71 .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);
72 } else {
73 value = converter.write(value, key);
74 }
75  
76 key = encodeURIComponent(String(key));
77 key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);
78 key = key.replace(/[\(\)]/g, escape);
79  
125 office 80 var stringifiedAttributes = '';
81  
82 for (var attributeName in attributes) {
83 if (!attributes[attributeName]) {
84 continue;
85 }
86 stringifiedAttributes += '; ' + attributeName;
87 if (attributes[attributeName] === true) {
88 continue;
89 }
90 stringifiedAttributes += '=' + attributes[attributeName];
91 }
92 return (document.cookie = key + '=' + value + stringifiedAttributes);
58 office 93 }
94  
95 // Read
96  
97 if (!key) {
98 result = {};
99 }
100  
101 // To prevent the for loop in the first place assign an empty array
102 // in case there are no cookies at all. Also prevents odd result when
103 // calling "get()"
104 var cookies = document.cookie ? document.cookie.split('; ') : [];
105 var rdecode = /(%[0-9A-Z]{2})+/g;
106 var i = 0;
107  
108 for (; i < cookies.length; i++) {
109 var parts = cookies[i].split('=');
110 var cookie = parts.slice(1).join('=');
111  
112 if (cookie.charAt(0) === '"') {
113 cookie = cookie.slice(1, -1);
114 }
115  
116 try {
117 var name = parts[0].replace(rdecode, decodeURIComponent);
118 cookie = converter.read ?
119 converter.read(cookie, name) : converter(cookie, name) ||
120 cookie.replace(rdecode, decodeURIComponent);
121  
122 if (this.json) {
123 try {
124 cookie = JSON.parse(cookie);
125 } catch (e) {}
126 }
127  
128 if (key === name) {
129 result = cookie;
130 break;
131 }
132  
133 if (!key) {
134 result[name] = cookie;
135 }
136 } catch (e) {}
137 }
138  
139 return result;
140 }
141  
142 api.set = api;
143 api.get = function (key) {
144 return api.call(api, key);
145 };
146 api.getJSON = function () {
147 return api.apply({
148 json: true
149 }, [].slice.call(arguments));
150 };
151 api.defaults = {};
152  
153 api.remove = function (key, attributes) {
154 api(key, '', extend(attributes, {
155 expires: -1
156 }));
157 };
158  
159 api.withConverter = init;
160  
161 return api;
162 }
163  
164 return init(function () {});
165 }));