| (function(root) { |
| var localStorageMemory = {}; |
| var cache = {}; |
| |
| /** |
| * number of stored items. |
| */ |
| localStorageMemory.length = 0; |
| |
| /** |
| * returns item for passed key, or null |
| * |
| * @para {String} key |
| * name of item to be returned |
| * @returns {String|null} |
| */ |
| localStorageMemory.getItem = function(key) { |
| return cache[key] || null; |
| }; |
| |
| /** |
| * sets item for key to passed value, as String |
| * |
| * @para {String} key |
| * name of item to be set |
| * @para {String} value |
| * value, will always be turned into a String |
| * @returns {undefined} |
| */ |
| localStorageMemory.setItem = function(key, value) { |
| if (typeof value === 'undefined') { |
| localStorageMemory.removeItem(key); |
| } else { |
| if (!(cache.hasOwnProperty(key))) { |
| localStorageMemory.length++; |
| } |
| |
| cache[key] = '' + value; |
| } |
| }; |
| |
| /** |
| * removes item for passed key |
| * |
| * @para {String} key |
| * name of item to be removed |
| * @returns {undefined} |
| */ |
| localStorageMemory.removeItem = function(key) { |
| if (cache.hasOwnProperty(key)) { |
| delete cache[key]; |
| localStorageMemory.length--; |
| } |
| }; |
| |
| /** |
| * returns name of key at passed index |
| * |
| * @para {Number} index |
| * Position for key to be returned (starts at 0) |
| * @returns {String|null} |
| */ |
| localStorageMemory.key = function(index) { |
| return Object.keys(cache)[index] || null; |
| }; |
| |
| /** |
| * removes all stored items and sets length to 0 |
| * |
| * @returns {undefined} |
| */ |
| localStorageMemory.clear = function() { |
| cache = {}; |
| localStorageMemory.length = 0; |
| }; |
| |
| if (typeof exports === 'object') { |
| module.exports = localStorageMemory; |
| } else { |
| root.localStorageMemory = localStorageMemory; |
| } |
| })(this); |