Skip to content

Instantly share code, notes, and snippets.

@hakobera
Created May 1, 2011 14:08
Show Gist options
  • Save hakobera/950525 to your computer and use it in GitHub Desktop.
Save hakobera/950525 to your computer and use it in GitHub Desktop.
LocalStorage Wrapper for enchant.js
/**
* enchant.js Save/Load module
*/
/**
* Namespace は適当に
*/
var Storage = {};
Storage.Event = {
SAVE: 'storage.save',
LOAD: 'storage.load'
};
(function() {
/**
* Local storage wrpper.
*/
var db ={
/**
* 指定したキーでオブジェクトを保存します。
*
* @param {String} key キー
* @param obj 保存するオブジェクト
* @return {Void}
*/
set : function(key, obj) {
localStorage.setItem(key, JSON.stringify(obj));
},
/**
* 指定したキーで保存されたオブジェクトを取得します。
*
* @param {String} key キー
* @return {Object} 保存されたオブジェクト
*/
get : function(key) {
if (this.contains(key)) {
return JSON.parse(localStorage.getItem(key));
} else {
return null;
}
},
/**
* ストレージに指定した key が保存されているかどうかを判定して返します。
*
* @param {String} key
* @return {Boolean} key が保存されている場合は true
*/
contains: function(key) {
return localStorage.getItem(key) !== null;
},
/**
* 指定したキーに保存されたオブジェクトを削除します。
*
* @param {String} key 削除するキー
* @return {Object} 保存されたオブジェクト
*/
remove: function(key) {
var obj = get(key);
localStorage.setItem(key, null);
return obj;
},
/**
* 全ての保存されたデータを削除します。
*/
clear: function() {
localStorage.clear();
}
};
/**
* EventTarget を保存します。
*
* @param {enchant.EventTarget} 保存する EventTarget
* @return {Void}
*/
Storage.save = function(target) {
var e = new enchant.Event(Storage.Event.SAVE);
e.db = db;
target.dispatchEvent(e);
console.log('save', target);
};
/**
* EventTarget を復元します。
*
* @param {enchant.EventTarget} 復元する EventTarget
* @return {Void}
*/
Storage.load = function(target) {
var e = new enchant.Event(Storage.Event.LOAD);
e.db = db;
target.dispatchEvent(e);
console.log('load', target);
};
})(this);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment