scratch – Blame information for rev 125
?pathlinks?
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 | })); |