1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-03-24 14:53:32 +01:00

Cleanup storage.jsm

This commit is contained in:
Kris Maglione
2008-10-02 17:23:42 +00:00
parent a6a77af604
commit 9dd5f1612b

View File

@@ -73,9 +73,9 @@ var prototype = {
save: function () { savePref(this) }, save: function () { savePref(this) },
}; };
function ObjectStore(name, store) function ObjectStore(name, store, data)
{ {
var object = loadPref(name, store, Object) || {}; var object = data || {};
this.__defineGetter__("store", function () store); this.__defineGetter__("store", function () store);
this.__defineGetter__("name", function () name); this.__defineGetter__("name", function () name);
@@ -115,9 +115,9 @@ function ObjectStore(name, store)
} }
ObjectStore.prototype = prototype; ObjectStore.prototype = prototype;
function ArrayStore(name, store) function ArrayStore(name, store, data)
{ {
var array = loadPref(name, store, Array) || []; var array = data || [];
this.__defineGetter__("store", function () store); this.__defineGetter__("store", function () store);
this.__defineGetter__("name", function () name); this.__defineGetter__("name", function () name);
@@ -182,35 +182,26 @@ var keys = {};
var observers = {}; var observers = {};
var storage = { var storage = {
_addKey: function addKey(key, val) newObject: function newObject(key, constructor, store, type)
{ {
if (key in this) if (!(key in keys))
throw Error; // TODO: Find a better error. {
keys[key] = val; if (key in this)
this.__defineGetter__(key, function () keys[key]); throw Error;
keys[key] = new constructor(key, store, loadPref(key, store, type || Object));
this.__defineGetter__(key, function () keys[key]);
}
return keys[key];
}, },
newMap: function newMap(key, store) newMap: function newMap(key, store)
{ {
// TODO: Add type checking. return this.newObject(key, ObjectStore, store);
if (!(key in keys))
this._addKey(key, new ObjectStore(key, store));
return this[key];
}, },
newArray: function newArray(key, store) newArray: function newArray(key, store)
{ {
// TODO: Add type checking. return this.newObject(key, ArrayStore, store, Array);
if (!(key in keys))
this._addKey(key, new ArrayStore(key, store));
return this[key];
},
newObject: function newObject(key, constructor, store)
{
if(!(key in keys))
this._addKey(key, new constructor(key, store, loadPref(key, store, Object)));
return this[key];
}, },
addObserver: function addObserver(key, callback) addObserver: function addObserver(key, callback)