olelo 0.9.3 → 0.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
- })();