1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-01-04 00:24:13 +01:00

Add messages.export.

This commit is contained in:
Kris Maglione
2011-10-05 04:29:33 -04:00
parent b9ecc8a1f0
commit 35bc2fb201
2 changed files with 50 additions and 3 deletions

View File

@@ -10,6 +10,9 @@ defineModule("help", {
require: ["cache", "dom", "javascript", "protocol", "services", "util"]
}, this);
this.lazyRequire("completion", ["completion"]);
this.lazyRequire("overlay", ["overlay"]);
var HelpBuilder = Class("HelpBuilder", {
init: function init() {
try {
@@ -398,7 +401,7 @@ var Help = Module("Help", {
if (zip)
zip.close();
}, [function (context, args) completion.file(context)]),
}, [function (context, args) overlay.activeModules.completion.file(context)]),
})
}, {

View File

@@ -87,8 +87,44 @@ var Messages = Module("messages", {
if (arguments.length < 3) // Do *not* localize these strings
util.reportError(Error("Invalid locale string: " + value));
return arguments.length > 2 ? default_ : value;
}
},
export: function export_(file) {
let { Buffer, commands, hints, io, mappings, modes, options, sanitizer } = overlay.activeModules;
file = io.File(file);
function foo(base, iter_, prop) iter(function _foo() {
function key() [base, obj.identifier || obj.name].concat(Array.slice(arguments)).join(".").replace(/[:=]/g, "\\$&");
prop = prop || "description";
for (var obj in iter_) {
if (!obj.hive || obj.hive.name !== "user") {
yield key(prop) + " = " + obj[prop];
if (iter_.values)
for (let [k, v] in isArray(obj.values) ? array.iterValues(obj.values) : iter(obj.values))
yield key("values", k) + " = " + v;
for (let opt in values(obj.options))
yield key("options", opt.names[0]) + " = " + opt.description;
if (obj.deprecated)
yield key("deprecated") + " = " + obj.deprecated;
}
}
}()).toArray();
file.write(
array(commands.allHives.map(function (h) foo("command", h)))
.concat(modes.all.map(function (m) foo("map", values(mappings.builtin.getStack(m)
.filter(function (map) map.modes[0] == m)))))
.concat(foo("mode", values(modes.all.filter(function (m) !m.hidden))))
.concat(foo("option", options))
.concat(foo("hintmode", values(hints.modes), "prompt"))
.concat(foo("pageinfo", values(Buffer.pageInfo), "title"))
.concat(foo("sanitizeitem", values(sanitizer.itemMap)))
.flatten().uniq().join("\n"))
}
}, {
Localized: Class("Localized", Class.Property, {
init: function init(prop, obj) {
@@ -141,9 +177,17 @@ var Messages = Module("messages", {
})
}, {
javascript: function initJavascript(dactyl, modules, window) {
modules.JavaScript.setCompleter([this._, this.get, this.format], [
let { JavaScript } = modules;
JavaScript.setCompleter([this._, this.get, this.format], [
function (context) messages.iterate()
]);
JavaScript.setCompleter([this.export],
[function (context, obj, args) {
context.quote[2] = "";
modules.completion.file(context, true);
}]);
}
});