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:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user