olelo 0.9.3 → 0.9.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. data/.travis.yml +4 -0
  2. data/Rakefile +6 -12
  3. data/bin/olelo +13 -8
  4. data/config.ru +21 -15
  5. data/config/aspects.rb +45 -32
  6. data/config/config.yml.default +1 -0
  7. data/config/initializers/00-mime_types.rb +22 -17
  8. data/config/initializers/01-slim.rb +2 -2
  9. data/lib/olelo.rb +1 -8
  10. data/lib/olelo/application.rb +33 -34
  11. data/lib/olelo/attributes.rb +4 -4
  12. data/lib/olelo/extensions.rb +0 -7
  13. data/lib/olelo/helper.rb +13 -25
  14. data/lib/olelo/html_safe.rb +0 -4
  15. data/lib/olelo/locale.yml +6 -3
  16. data/lib/olelo/menu.rb +1 -1
  17. data/lib/olelo/page.rb +21 -18
  18. data/lib/olelo/version.rb +1 -1
  19. data/olelo.gemspec +5 -3
  20. data/plugins/aspects/changelog.rb +5 -5
  21. data/plugins/aspects/documentbrowser.rb +5 -5
  22. data/plugins/{gallery → aspects/gallery}/gallery.css +0 -0
  23. data/plugins/{gallery → aspects/gallery}/gallery.scss +0 -0
  24. data/plugins/{gallery → aspects/gallery}/main.rb +3 -3
  25. data/plugins/aspects/highlight.rb +1 -1
  26. data/plugins/aspects/image.rb +1 -1
  27. data/plugins/aspects/imageinfo.rb +3 -3
  28. data/plugins/aspects/main.rb +21 -21
  29. data/plugins/aspects/pageinfo.rb +2 -2
  30. data/plugins/aspects/source.rb +1 -1
  31. data/plugins/aspects/subpages.rb +7 -7
  32. data/plugins/aspects/text.rb +1 -1
  33. data/plugins/authentication/portal.rb +2 -2
  34. data/plugins/authentication/yamlfile.rb +1 -1
  35. data/plugins/blog/main.rb +10 -10
  36. data/plugins/editor/preview.rb +3 -3
  37. data/plugins/filters/creole.rb +1 -1
  38. data/plugins/filters/editsection.rb +2 -2
  39. data/plugins/filters/html2xml.rb +6 -0
  40. data/plugins/filters/main.rb +1 -1
  41. data/plugins/filters/remind/main.rb +15 -0
  42. data/plugins/filters/remind/rem2html +562 -0
  43. data/plugins/filters/s5/main.rb +1 -1
  44. data/plugins/login/persistent.rb +1 -1
  45. data/plugins/misc/system.rb +4 -0
  46. data/plugins/misc/variables.rb +1 -1
  47. data/plugins/misc/webdav.rb +10 -10
  48. data/plugins/repositories/git_grep.rb +2 -2
  49. data/plugins/repositories/gitrb_repository.rb +10 -10
  50. data/plugins/repositories/rugged_repository.rb +7 -7
  51. data/plugins/tags/code.rb +1 -1
  52. data/plugins/tags/footnotes.rb +4 -3
  53. data/plugins/tags/gist.rb +2 -2
  54. data/plugins/tags/html.rb +11 -11
  55. data/plugins/tags/include.rb +6 -6
  56. data/plugins/tags/main.rb +10 -10
  57. data/plugins/tags/math.rb +2 -2
  58. data/plugins/tags/redirect.rb +3 -3
  59. data/plugins/tags/scripting.rb +12 -12
  60. data/plugins/tags/sort.rb +1 -1
  61. data/plugins/tags/tabs.rb +1 -1
  62. data/plugins/treeview/main.rb +3 -3
  63. data/plugins/treeview/script.js +5 -5
  64. data/plugins/treeview/script/00-jquery.treeview.js +6 -6
  65. data/plugins/treeview/script/init.js +1 -1
  66. data/plugins/utils/assets.rb +4 -4
  67. data/plugins/utils/cache.rb +10 -6
  68. data/plugins/utils/store.rb +4 -4
  69. data/static/script.js +124 -126
  70. data/static/script/{02-jquery.js → 01-jquery.js} +0 -0
  71. data/static/script/02-olelo.storage.js +54 -0
  72. data/static/script/10-olelo.historytable.js +2 -2
  73. data/static/script/13-olelo.tabwidget.js +2 -2
  74. data/test/helper.rb +5 -4
  75. data/test/page_test.rb +1 -1
  76. data/test/request_test.rb +42 -38
  77. data/test/string_extensions_test.rb +0 -6
  78. data/test/templates_test.rb +1 -1
  79. data/test/util_test.rb +1 -1
  80. data/views/changes.slim +2 -2
  81. data/views/compare.slim +4 -4
  82. data/views/delete.slim +2 -2
  83. data/views/deleted.slim +1 -1
  84. data/views/edit.slim +31 -26
  85. data/views/history.slim +5 -5
  86. data/views/layout.slim +1 -1
  87. data/views/login.slim +30 -32
  88. data/views/move.slim +3 -3
  89. data/views/profile.slim +2 -2
  90. data/views/show.slim +1 -1
  91. metadata +43 -104
  92. data/static/script/01-jstorage.js +0 -217
@@ -1,8 +1,8 @@
1
- - title :move_page.t(:page => page.title)
1
+ - title :move_page.t(page: page.title)
2
2
  h1= title
3
- form action=build_path(page, :action => :move) method='post'
3
+ = flash_messages
4
+ form action=build_path(page, action: :move) method='post'
4
5
  .box
5
- = flash_messages
6
6
  label for='destination' = :destination.t
7
7
  &text#destination name='destination' value={params[:destination] || page.path}
8
8
  br
@@ -1,8 +1,8 @@
1
- - title :profile_title.t(:user => Olelo::User.current.name)
1
+ - title :profile_title.t(user: Olelo::User.current.name)
2
2
  h1= title
3
+ = flash_messages
3
4
  form action=build_path(:profile) method='post'
4
5
  .fieldset
5
- = flash_messages
6
6
  h2= :change_password.t
7
7
  label for='oldpassword' = :old_password.t
8
8
  &password name='oldpassword' id='oldpassword'
@@ -1,7 +1,7 @@
1
1
  - title page.title
2
2
  = footer do
3
3
  ' #{:version.t}
4
- a.version href=build_path(page, :version => page.version, :force_version => true) title=page.version = page.version.short
4
+ a.version href=build_path(page, version: page.version, force_version: true) title=page.version = page.version.short
5
5
  ' #{:by.t} #{page.version.author.name},
6
6
  = date page.version.date
7
7
  - if !page.attributes['no_title']
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: olelo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3
4
+ version: 0.9.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,27 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-23 00:00:00.000000000 Z
12
+ date: 2012-10-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: tilt
16
- requirement: !ruby/object:Gem::Requirement
15
+ name: multi_json
16
+ requirement: &8726980 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 1.3.3
21
+ version: 1.3.6
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- version: 1.3.3
24
+ version_requirements: *8726980
30
25
  - !ruby/object:Gem::Dependency
31
26
  name: slim
32
- requirement: !ruby/object:Gem::Requirement
27
+ requirement: &8725520 !ruby/object:Gem::Requirement
33
28
  none: false
34
29
  requirements:
35
30
  - - ~>
@@ -37,15 +32,10 @@ dependencies:
37
32
  version: 1.3.3
38
33
  type: :runtime
39
34
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: 1.3.3
35
+ version_requirements: *8725520
46
36
  - !ruby/object:Gem::Dependency
47
37
  name: creole
48
- requirement: !ruby/object:Gem::Requirement
38
+ requirement: &8724680 !ruby/object:Gem::Requirement
49
39
  none: false
50
40
  requirements:
51
41
  - - ~>
@@ -53,15 +43,10 @@ dependencies:
53
43
  version: 0.4.2
54
44
  type: :runtime
55
45
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: 0.4.2
46
+ version_requirements: *8724680
62
47
  - !ruby/object:Gem::Dependency
63
48
  name: nokogiri
64
- requirement: !ruby/object:Gem::Requirement
49
+ requirement: &8723740 !ruby/object:Gem::Requirement
65
50
  none: false
66
51
  requirements:
67
52
  - - ~>
@@ -69,15 +54,10 @@ dependencies:
69
54
  version: 1.5.5
70
55
  type: :runtime
71
56
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ~>
76
- - !ruby/object:Gem::Version
77
- version: 1.5.5
57
+ version_requirements: *8723740
78
58
  - !ruby/object:Gem::Dependency
79
59
  name: mimemagic
80
- requirement: !ruby/object:Gem::Requirement
60
+ requirement: &8722860 !ruby/object:Gem::Requirement
81
61
  none: false
82
62
  requirements:
83
63
  - - ~>
@@ -85,15 +65,10 @@ dependencies:
85
65
  version: 0.2.0
86
66
  type: :runtime
87
67
  prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ~>
92
- - !ruby/object:Gem::Version
93
- version: 0.2.0
68
+ version_requirements: *8722860
94
69
  - !ruby/object:Gem::Dependency
95
70
  name: rack
96
- requirement: !ruby/object:Gem::Requirement
71
+ requirement: &8722040 !ruby/object:Gem::Requirement
97
72
  none: false
98
73
  requirements:
99
74
  - - ~>
@@ -101,47 +76,32 @@ dependencies:
101
76
  version: 1.4.1
102
77
  type: :runtime
103
78
  prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ~>
108
- - !ruby/object:Gem::Version
109
- version: 1.4.1
79
+ version_requirements: *8722040
110
80
  - !ruby/object:Gem::Dependency
111
81
  name: redcarpet
112
- requirement: !ruby/object:Gem::Requirement
82
+ requirement: &8721240 !ruby/object:Gem::Requirement
113
83
  none: false
114
84
  requirements:
115
85
  - - ~>
116
86
  - !ruby/object:Gem::Version
117
- version: 2.2.1
87
+ version: 2.2.2
118
88
  type: :runtime
119
89
  prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - ~>
124
- - !ruby/object:Gem::Version
125
- version: 2.2.1
90
+ version_requirements: *8721240
126
91
  - !ruby/object:Gem::Dependency
127
92
  name: rugged
128
- requirement: !ruby/object:Gem::Requirement
93
+ requirement: &9145700 !ruby/object:Gem::Requirement
129
94
  none: false
130
95
  requirements:
131
96
  - - ~>
132
97
  - !ruby/object:Gem::Version
133
- version: 0.17.0b6
98
+ version: 0.17.0.b7
134
99
  type: :runtime
135
100
  prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
139
- - - ~>
140
- - !ruby/object:Gem::Version
141
- version: 0.17.0b6
101
+ version_requirements: *9145700
142
102
  - !ruby/object:Gem::Dependency
143
103
  name: evaluator
144
- requirement: !ruby/object:Gem::Requirement
104
+ requirement: &9144960 !ruby/object:Gem::Requirement
145
105
  none: false
146
106
  requirements:
147
107
  - - ~>
@@ -149,15 +109,10 @@ dependencies:
149
109
  version: 0.1.6
150
110
  type: :runtime
151
111
  prerelease: false
152
- version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
- requirements:
155
- - - ~>
156
- - !ruby/object:Gem::Version
157
- version: 0.1.6
112
+ version_requirements: *9144960
158
113
  - !ruby/object:Gem::Dependency
159
114
  name: rake
160
- requirement: !ruby/object:Gem::Requirement
115
+ requirement: &9144460 !ruby/object:Gem::Requirement
161
116
  none: false
162
117
  requirements:
163
118
  - - ! '>='
@@ -165,15 +120,10 @@ dependencies:
165
120
  version: 0.8.7
166
121
  type: :development
167
122
  prerelease: false
168
- version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
- requirements:
171
- - - ! '>='
172
- - !ruby/object:Gem::Version
173
- version: 0.8.7
123
+ version_requirements: *9144460
174
124
  - !ruby/object:Gem::Dependency
175
125
  name: sass
176
- requirement: !ruby/object:Gem::Requirement
126
+ requirement: &9143960 !ruby/object:Gem::Requirement
177
127
  none: false
178
128
  requirements:
179
129
  - - ! '>='
@@ -181,15 +131,10 @@ dependencies:
181
131
  version: 3.1.0
182
132
  type: :development
183
133
  prerelease: false
184
- version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
- requirements:
187
- - - ! '>='
188
- - !ruby/object:Gem::Version
189
- version: 3.1.0
134
+ version_requirements: *9143960
190
135
  - !ruby/object:Gem::Dependency
191
136
  name: bacon
192
- requirement: !ruby/object:Gem::Requirement
137
+ requirement: &9143380 !ruby/object:Gem::Requirement
193
138
  none: false
194
139
  requirements:
195
140
  - - ~>
@@ -197,15 +142,10 @@ dependencies:
197
142
  version: 1.1.0
198
143
  type: :development
199
144
  prerelease: false
200
- version_requirements: !ruby/object:Gem::Requirement
201
- none: false
202
- requirements:
203
- - - ~>
204
- - !ruby/object:Gem::Version
205
- version: 1.1.0
145
+ version_requirements: *9143380
206
146
  - !ruby/object:Gem::Dependency
207
147
  name: rack-test
208
- requirement: !ruby/object:Gem::Requirement
148
+ requirement: &9142860 !ruby/object:Gem::Requirement
209
149
  none: false
210
150
  requirements:
211
151
  - - ~>
@@ -213,12 +153,7 @@ dependencies:
213
153
  version: 0.6.2
214
154
  type: :development
215
155
  prerelease: false
216
- version_requirements: !ruby/object:Gem::Requirement
217
- none: false
218
- requirements:
219
- - - ~>
220
- - !ruby/object:Gem::Version
221
- version: 0.6.2
156
+ version_requirements: *9142860
222
157
  description: Olelo is a git-based wiki which supports many markup languages, tags,
223
158
  embedded TeX and much more. It can be extended through plugins.
224
159
  email:
@@ -230,6 +165,7 @@ extra_rdoc_files: []
230
165
  files:
231
166
  - .gitignore
232
167
  - .gitmodules
168
+ - .travis.yml
233
169
  - Gemfile
234
170
  - LICENSE
235
171
  - README.creole
@@ -272,6 +208,9 @@ files:
272
208
  - plugins/aspects/changelog.rb
273
209
  - plugins/aspects/documentbrowser.rb
274
210
  - plugins/aspects/download.rb
211
+ - plugins/aspects/gallery/gallery.css
212
+ - plugins/aspects/gallery/gallery.scss
213
+ - plugins/aspects/gallery/main.rb
275
214
  - plugins/aspects/highlight.rb
276
215
  - plugins/aspects/image.rb
277
216
  - plugins/aspects/imageinfo.rb
@@ -302,6 +241,7 @@ files:
302
241
  - plugins/filters/disposition.rb
303
242
  - plugins/filters/editsection.rb
304
243
  - plugins/filters/fix_img_tag.rb
244
+ - plugins/filters/html2xml.rb
305
245
  - plugins/filters/html_wrapper.rb
306
246
  - plugins/filters/interwiki.rb
307
247
  - plugins/filters/link_classifier.rb
@@ -310,6 +250,8 @@ files:
310
250
  - plugins/filters/markdown_nowiki.rb
311
251
  - plugins/filters/numbering.xsl
312
252
  - plugins/filters/orgmode.rb
253
+ - plugins/filters/remind/main.rb
254
+ - plugins/filters/remind/rem2html
313
255
  - plugins/filters/rubypants.rb
314
256
  - plugins/filters/s5/main.rb
315
257
  - plugins/filters/s5/s5.xsl
@@ -317,9 +259,6 @@ files:
317
259
  - plugins/filters/toc.rb
318
260
  - plugins/filters/xhtml2latex.xsl
319
261
  - plugins/filters/xslt.rb
320
- - plugins/gallery/gallery.css
321
- - plugins/gallery/gallery.scss
322
- - plugins/gallery/main.rb
323
262
  - plugins/login/basic_auth.rb
324
263
  - plugins/login/locale.yml
325
264
  - plugins/login/persistent.rb
@@ -399,8 +338,8 @@ files:
399
338
  - static/images/favicon.png
400
339
  - static/script.js
401
340
  - static/script/00-json2.js
402
- - static/script/01-jstorage.js
403
- - static/script/02-jquery.js
341
+ - static/script/01-jquery.js
342
+ - static/script/02-olelo.storage.js
404
343
  - static/script/03-jquery.ui.core.js
405
344
  - static/script/04-jquery.ui.widget.js
406
345
  - static/script/05-jquery.ui.position.js
@@ -516,7 +455,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
516
455
  requirements:
517
456
  - - ! '>='
518
457
  - !ruby/object:Gem::Version
519
- version: '0'
458
+ version: 1.9.2
520
459
  required_rubygems_version: !ruby/object:Gem::Requirement
521
460
  none: false
522
461
  requirements:
@@ -525,7 +464,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
525
464
  version: '0'
526
465
  requirements: []
527
466
  rubyforge_project: olelo
528
- rubygems_version: 1.8.24
467
+ rubygems_version: 1.8.15
529
468
  signing_key:
530
469
  specification_version: 3
531
470
  summary: Olelo is a git-based wiki.
@@ -1,217 +0,0 @@
1
- /**
2
- * ----------------------------- JSTORAGE -------------------------------------
3
- * Simple local storage wrapper to save data on the browser side, supporting
4
- * all major browsers - IE6+, Firefox2+, Safari4+, Chrome4+ and Opera 10.5+
5
- *
6
- * Copyright (c) 2010 Andris Reinman, andris.reinman@gmail.com
7
- * Project homepage: www.jstorage.info
8
- *
9
- * Licensed under MIT-style license:
10
- *
11
- * Permission is hereby granted, free of charge, to any person obtaining a copy
12
- * of this software and associated documentation files (the "Software"), to deal
13
- * in the Software without restriction, including without limitation the rights
14
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
- * copies of the Software, and to permit persons to whom the Software is
16
- * furnished to do so, subject to the following conditions:
17
- *
18
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24
- * SOFTWARE.
25
- */
26
-
27
- /**
28
- * USAGE:
29
- *
30
- * jStorage requires JSON.parse and JSON.stringify. These
31
- * methods are provided by the browser or by
32
- * http://www.json.org/json2.js.
33
- *
34
- * Methods:
35
- *
36
- * -set(key, value)
37
- * jStorage.set(key, value) -> saves a value
38
- *
39
- * -get(key[, default])
40
- * value = jStorage.get(key [, default]) ->
41
- * retrieves value if key exists, or default if it doesn't
42
- *
43
- * -remove(key)
44
- * jStorage.remove(key) -> removes a key from the storage
45
- *
46
- * -flush()
47
- * jStorage.flush() -> clears the cache
48
- *
49
- * <value> can be any JSON-able value, including objects and arrays.
50
- *
51
- */
52
-
53
- (function() {
54
- var
55
- // This is the object, that holds the cached values
56
- storage = {},
57
-
58
- // Actual browser storage (localStorage or globalStorage['domain']) */
59
- storageService = null,
60
-
61
- // DOM element for older IE versions, holds userData behavior */
62
- storageElement = null;
63
-
64
- ////////////////////////// PRIVATE METHODS ////////////////////////
65
-
66
- /**
67
- * Initialization function. Detects if the browser supports DOM Storage
68
- * or userData behavior and behaves accordingly.
69
- * @returns undefined
70
- */
71
- function init() {
72
- try {
73
- if (window.localStorage)
74
- storageService = window.localStorage;
75
- else if (window.globalStorage)
76
- storageService = window.globalStorage[window.location.hostname];
77
- } catch (e) {
78
- // Firefox fails when touching localStorage/globalStorage and cookies are disabled
79
- }
80
-
81
- // Check if browser supports userData behavior
82
- if (!storageService) {
83
- storageElement = document.createElement('link');
84
- if (storageElement.addBehavior) {
85
-
86
- // Use a DOM element to act as userData storage
87
- storageElement.style.behavior = 'url(#default#userData)';
88
-
89
- // userData element needs to be inserted into the DOM!
90
- document.getElementsByTagName('head')[0].appendChild(storageElement);
91
-
92
- storageElement.load('jStorage');
93
- var data = '{}';
94
- try{
95
- data = storageElement.getAttribute('jStorage');
96
- } catch (e) {
97
- }
98
- storageService.jStorage = data;
99
- } else {
100
- storageElement = null;
101
- return;
102
- }
103
- }
104
-
105
- if (!storageService)
106
- storageService = { jStorage: '{}' };
107
-
108
- // if jStorage string is retrieved, then decode it
109
- if (storageService.jStorage) {
110
- try {
111
- storage = JSON.parse(storageService.jStorage);
112
- } catch (e) {
113
- storageService.jStorage = '{}';
114
- }
115
- } else {
116
- storageService.jStorage = '{}';
117
- }
118
- }
119
-
120
- /**
121
- * This functions provides the "save" mechanism to store the jStorage object
122
- * @returns undefined
123
- */
124
- function save() {
125
- try {
126
- storageService.jStorage = JSON.stringify(storage);
127
- // If userData is used as the storage engine, additional
128
- if (storageElement) {
129
- storageElement.setAttribute('jStorage',storageService.jStorage);
130
- storageElement.save('jStorage');
131
- }
132
- } catch (e) {
133
- // probably cache is full, nothing is saved this way
134
- }
135
- }
136
-
137
- /**
138
- * Function checks if a key is set and is string or numberic
139
- */
140
- function checkKey(key) {
141
- if (typeof key != 'string' && typeof key != 'number')
142
- throw new TypeError('Key name must be string or numeric');
143
- }
144
-
145
- ////////////////////////// PUBLIC INTERFACE /////////////////////////
146
-
147
- var jStorage = {
148
- /**
149
- * Sets a key's value.
150
- *
151
- * @param {String} key - Key to set. If this value is not set or not
152
- * a string an exception is raised.
153
- * @param value - Value to set. This can be any value that is JSON
154
- * compatible (Numbers, Strings, Objects etc.).
155
- * @returns the used value
156
- */
157
- set: function(key, value){
158
- checkKey(key);
159
- storage[key] = value;
160
- save();
161
- return value;
162
- },
163
-
164
- /**
165
- * Looks up a key in cache
166
- *
167
- * @param {String} key - Key to look up.
168
- * @param {mixed} def - Default value to return, if key didn't exist.
169
- * @returns the key value, default value or <null>
170
- */
171
- get: function(key, def){
172
- checkKey(key);
173
- if (key in storage)
174
- return storage[key];
175
- return typeof(def) == 'undefined' ? null : def;
176
- },
177
-
178
- /**
179
- * Removes a key from cache.
180
- *
181
- * @param {String} key - Key to remove.
182
- * @returns true if key existed or false if it didn't
183
- */
184
- remove: function(key){
185
- checkKey(key);
186
- if (key in storage){
187
- delete storage[key];
188
- save();
189
- return true;
190
- }
191
- return false;
192
- },
193
-
194
- /**
195
- * Deletes everything in cache.
196
- */
197
- flush: function(){
198
- storage = {};
199
- save();
200
- /*
201
- * Just to be sure - andris9/jStorage#3
202
- */
203
- if (window.localStorage){
204
- try {
205
- localStorage.clear();
206
- } catch (e) {
207
- }
208
- }
209
- }
210
- };
211
-
212
- // Initialize jStorage
213
- init();
214
-
215
- // Expose api
216
- window.jStorage = jStorage;
217
- })();