1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-02-06 22:15:46 +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) },
};
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__("name", function () name);
@@ -115,9 +115,9 @@ function ObjectStore(name, store)
}
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__("name", function () name);
@@ -182,35 +182,26 @@ var keys = {};
var observers = {};
var storage = {
_addKey: function addKey(key, val)
newObject: function newObject(key, constructor, store, type)
{
if (key in this)
throw Error; // TODO: Find a better error.
keys[key] = val;
this.__defineGetter__(key, function () keys[key]);
if (!(key in keys))
{
if (key in this)
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)
{
// TODO: Add type checking.
if (!(key in keys))
this._addKey(key, new ObjectStore(key, store));
return this[key];
return this.newObject(key, ObjectStore, store);
},
newArray: function newArray(key, store)
{
// TODO: Add type checking.
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];
return this.newObject(key, ArrayStore, store, Array);
},
addObserver: function addObserver(key, callback)