<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>JSDoc: Source: storage.js</title> <script src="scripts/prettify/prettify.js"> </script> <script src="scripts/prettify/lang-css.js"> </script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> </head> <body> <div id="main"> <h1 class="page-title">Source: storage.js</h1> <section> <article> <pre class="prettyprint source linenums"><code>/** * Helper object for interfacing with the LocalStorage. The LocalStorage * browser API allows for offline storage. That API is very unsophisticated, * and is essentially a lame key-value store. This object sits on top * and provides a number of useful utilities, including rudimentarycache * cache expiration. * * @constructor * @this {LocalStorageWrapper} * @param {String} namespace - A namespace to use in grouping access to localstorage. This keeps access clean and organized, while also making it possible to have multiple LocalStorage connections. */ function LocalStorageWrapper(namespace) { this.namespace = namespace; } /** * A method for adding a key/value pair to LocalStorage. * Note that both parameters must be strings (JSON.stringify is your friend). * * @param {String} key - The name of the key. * @param {String} value - The value. */ LocalStorageWrapper.prototype.set = function(key, value) { localStorage.setItem(namespace+"_"+key+"_value", value); localStorage.setItem(namespace+"_"+key+"_timestamp", $.now()); }; /** * A method for removing a key from LocalStorage. * * @param {String} key - The name of the key to remove. */ LocalStorageWrapper.prototype.remove = function(key) { localStorage.removeItem(namespace+"_"+key+"_value"); localStorage.removeItem(namespace+"_"+key+"_timestamp"); }; /** * A method for retrieving the value associated with the given key. * * @param {String} key - The name of the key to retrieve the value for. */ LocalStorageWrapper.prototype.get = function(key) { return localStorage.getItem(namespace+"_"+key+"_value"); }; /** * A test for whether the given key is in LocalStorage. * * @param {String} key - The key to test existence for. */ LocalStorageWrapper.prototype.has = function(key) { return localStorage.getItem(namespace+"_"+key+"_value") !== null; }; /** * A test for whether the server has the newer version. This function * assumes that the server trip takes about 5 seconds. This method * is largely deprecated. * * @param {String} key - The key to check. * @param {Integer} server_time - The server's time as an epoch (in milliseconds) */ LocalStorageWrapper.prototype.is_new = function(key, server_time) { var stored_time = localStorage.getItem(namespace+"_"+key+"_timestamp"); return (server_time >= stored_time+5000); };</code></pre> </article> </section> </div> <nav> <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="BlockPy.html">BlockPy</a></li><li><a href="BlockPyCorgis.html">BlockPyCorgis</a></li><li><a href="BlockPyDialog.html">BlockPyDialog</a></li><li><a href="BlockPyEditor.html">BlockPyEditor</a></li><li><a href="BlockPyEngine.html">BlockPyEngine</a></li><li><a href="BlockPyEnglish.html">BlockPyEnglish</a></li><li><a href="BlockPyFeedback.html">BlockPyFeedback</a></li><li><a href="BlockPyHistory.html">BlockPyHistory</a></li><li><a href="BlockPyPresentation.html">BlockPyPresentation</a></li><li><a href="BlockPyPrinter.html">BlockPyPrinter</a></li><li><a href="BlockPyServer.html">BlockPyServer</a></li><li><a href="BlockPyToolbar.html">BlockPyToolbar</a></li><li><a href="LocalStorageWrapper.html">LocalStorageWrapper</a></li><li><a href="PythonToBlocks.html">PythonToBlocks</a></li></ul><h3>Global</h3><ul><li><a href="global.html#BlockPyInterface">BlockPyInterface</a></li><li><a href="global.html#cloneNode">cloneNode</a></li><li><a href="global.html#encodeHTML">encodeHTML</a></li><li><a href="global.html#expandArray">expandArray</a></li><li><a href="global.html#EXTENDED_ERROR_EXPLANATION">EXTENDED_ERROR_EXPLANATION</a></li><li><a href="global.html#indent">indent</a></li><li><a href="global.html#instructor_module">instructor_module</a></li><li><a href="global.html#prettyPrintDateTime">prettyPrintDateTime</a></li><li><a href="global.html#randomInteger">randomInteger</a></li><li><a href="global.html#set_button_loaded">set_button_loaded</a></li><li><a href="global.html#timerGuard">timerGuard</a></li></ul> </nav> <br class="clear"> <footer> Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.4.3</a> on Sun Mar 26 2017 09:45:03 GMT-0400 (Eastern Daylight Time) </footer> <script> prettyPrint(); </script> <script src="scripts/linenumber.js"> </script> </body> </html>