1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-01-23 19:05:46 +01:00

Profide default leaf names in :write for people who can't be bothered to think up their own.

--HG--
extra : rebase_source : 6bfef2eff2a7319af53fa9610fd8f16d5513e221
This commit is contained in:
Kris Maglione
2010-12-03 16:55:00 -05:00
parent 3886a82f47
commit f63b13d431
8 changed files with 47 additions and 27 deletions

View File

@@ -391,9 +391,7 @@ function iter(obj) {
if (obj.constructor instanceof ctypes.StructType)
return (function () {
for (let prop in values(obj.constructor.fields))
let ([name, type] = Iterator(prop).next()) {
yield [name, obj[name]];
}
yield let ([name, type] = Iterator(prop).next()) [name, obj[name]];
})();
obj = {};
}

View File

@@ -39,6 +39,7 @@ const Services = Module("Services", {
this.add("io", "@mozilla.org/network/io-service;1", Ci.nsIIOService);
this.add("json", "@mozilla.org/dom/json;1", Ci.nsIJSON, "createInstance");
this.add("livemark", "@mozilla.org/browser/livemark-service;2", Ci.nsILivemarkService);
this.add("mime", "@mozilla.org/mime;1", Ci.nsIMIMEService);
this.add("observer", "@mozilla.org/observer-service;1", Ci.nsIObserverService);
this.add("pref", "@mozilla.org/preferences-service;1", [Ci.nsIPrefBranch2, Ci.nsIPrefService]);
this.add("privateBrowsing", "@mozilla.org/privatebrowsing;1", Ci.nsIPrivateBrowsingService);

View File

@@ -18,10 +18,8 @@ const win32 = /^win(32|nt)$/i.test(services.runtime.OS);
function loadData(name, store, type) {
try {
if (storage.infoPath)
var file = storage.infoPath.child(name).read();
if (file)
var result = services.json.decode(file);
let data = storage.infoPath.child(name).read();
let result = JSON.parse(data);
if (result instanceof type)
return result;
}
@@ -37,8 +35,11 @@ function saveData(obj) {
const StoreBase = Class("StoreBase", {
OPTIONS: ["privateData", "replacer"],
fireEvent: function (event, arg) { storage.fireEvent(this.name, event, arg); },
get serial() JSON.stringify(this._object, this.replacer),
init: function (name, store, load, options) {
this._load = load;
@@ -49,11 +50,14 @@ const StoreBase = Class("StoreBase", {
this[k] = v;
this.reload();
},
changed: function () { this.timer.tell() },
reload: function reload() {
this._object = this._load() || this._constructor();
this.fireEvent("change", null);
},
save: function () { saveData(this); },
});
@@ -205,8 +209,8 @@ const Storage = Module("Storage", {
fireEvent: function fireEvent(key, event, arg) {
this.removeDeadObservers();
// Safe, since we have our own Array object here.
if (key in observers)
// Safe, since we have our own Array object here.
for each (let observer in observers[key])
observer.callback.get()(key, event, arg);
if (key in keys)
@@ -481,12 +485,11 @@ const File = Class("File", {
/**
* @property {string} The current platform's path separator.
*/
get PATH_SEP() {
delete this.PATH_SEP;
PATH_SEP: Class.memoize(function () {
let f = services.directory.get("CurProcD", Ci.nsIFile);
f.append("foo");
return this.PATH_SEP = f.path.substr(f.parent.path.length, 1);
},
return f.path.substr(f.parent.path.length, 1);
}),
DoesNotExist: function (error) ({
exists: function () false,
@@ -544,7 +547,7 @@ const File = Class("File", {
joinPaths: function (head, tail, cwd) {
let path = this(head, cwd);
try {
// FIXME: should only expand env vars and normalise path separators
// FIXME: should only expand environment vars and normalize path separators
path.appendRelativePath(this.expandPath(tail, true));
}
catch (e) {

View File

@@ -501,7 +501,9 @@ const Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference])
/** @property {boolean} True if the OS is Mac OS X. */
get isMacOSX() this._arch == "Darwin",
/** @property {boolean} True if the OS is some other *nix variant. */
get isUnix() !this.isWindows && !this.isMacOSX
get isUnix() !this.isWindows && !this.isMacOSX,
/** @property {RegExp} A RegExp which matches illegal characters in path components. */
get illegalCharacters() this.isWindows ? /[<>:"/\\|?*\x00-\x1f]/ : /\//
},
/**