1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-01-08 22:14:12 +01:00

Fix typo in 'passkeys' setter from revision e6db4764e7e6. Fail with a message on throw from option setter. Closes issue #392.

This commit is contained in:
Kris Maglione
2011-02-19 14:53:12 -05:00
parent 732dd0a12d
commit 83e8d068c2
2 changed files with 55 additions and 55 deletions

View File

@@ -1528,7 +1528,7 @@ var Events = Module("events", {
setter: function (values) {
values.forEach(function (filter) {
filter.result = events.fromString(filter.result).map(events.closure.toString);
filter.result.toString = bind(filter.results.join, filter.results);
filter.result.toString = bind(filter.result.join, filter.result);
});
return values;
}

View File

@@ -45,7 +45,7 @@ let ValueError = Class("ValueError", ErrorBase);
* @private
*/
var Option = Class("Option", {
init: function (names, description, type, defaultValue, extraInfo) {
init: function init(names, description, type, defaultValue, extraInfo) {
this.name = names[0];
this.names = names;
this.realNames = names;
@@ -92,7 +92,7 @@ var Option = Class("Option", {
get helpTag() "'" + this.name + "'",
initValue: function () {
initValue: function initValue() {
util.trapErrors(function () this.value = this.value, this);
},
@@ -109,7 +109,7 @@ var Option = Class("Option", {
* @param {value} value The option value.
* @returns {value|string[]}
*/
parse: function (value) Option.dequote(value),
parse: function parse(value) Option.dequote(value),
/**
* Returns *values* packed in the appropriate format for the option type.
@@ -117,7 +117,7 @@ var Option = Class("Option", {
* @param {value|string[]} values The option value.
* @returns {value}
*/
stringify: function (vals) Commands.quote(vals),
stringify: function stringify(vals) Commands.quote(vals),
/**
* Returns the option's value as an array of parsed values if the option
@@ -127,7 +127,7 @@ var Option = Class("Option", {
* {@link Option#scope}).
* @returns {value|string[]}
*/
get: function (scope) {
get: function get(scope) {
if (scope) {
if ((scope & this.scope) == 0) // option doesn't exist in this scope
return null;
@@ -157,13 +157,13 @@ var Option = Class("Option", {
* @param {number} scope The scope to apply these values to (see
* {@link Option#scope}).
*/
set: function (newValues, scope, skipGlobal) {
set: function set(newValues, scope, skipGlobal) {
scope = scope || this.scope;
if ((scope & this.scope) == 0) // option doesn't exist in this scope
return;
if (this.setter)
newValues = this.modules.dactyl.trapErrors(this.setter, this, newValues);
newValues = this.setter(newValues);
if (newValues === undefined)
return;
@@ -198,7 +198,7 @@ var Option = Class("Option", {
get stringDefaultValue() this.stringify(this.defaultValue),
getKey: function (key) undefined,
getKey: function getKey(key) undefined,
/**
* Returns whether the option value contains one or more of the specified
@@ -206,7 +206,7 @@ var Option = Class("Option", {
*
* @returns {boolean}
*/
has: function () Array.some(arguments, function (val) this.value.indexOf(val) >= 0, this),
has: function has() Array.some(arguments, function (val) this.value.indexOf(val) >= 0, this),
/**
* Returns whether this option is identified by *name*.
@@ -214,21 +214,21 @@ var Option = Class("Option", {
* @param {string} name
* @returns {boolean}
*/
hasName: function (name) this.names.indexOf(name) >= 0,
hasName: function hasName(name) this.names.indexOf(name) >= 0,
/**
* Returns whether the specified *values* are valid for this option.
* @see Option#validator
*/
isValidValue: function (values) this.validator(values),
isValidValue: function isValidValue(values) this.validator(values),
invalidArgument: function (arg, op) "E474: Invalid argument: " +
invalidArgument: function invalidArgument(arg, op) "E474: Invalid argument: " +
this.name + (op || "").replace(/=?$/, "=") + arg,
/**
* Resets the option to its default value.
*/
reset: function () {
reset: function reset() {
this.value = this.defaultValue;
},
@@ -241,7 +241,7 @@ var Option = Class("Option", {
* {@link #scope}).
* @param {boolean} invert Whether this is an invert boolean operation.
*/
op: function (operator, values, scope, invert, str) {
op: function op(operator, values, scope, invert, str) {
try {
var newValues = this._op(operator, values, scope, invert);
@@ -250,14 +250,14 @@ var Option = Class("Option", {
if (!this.isValidValue(newValues))
return this.invalidArgument(str || this.stringify(values), operator);
this.set(newValues, scope);
}
catch (e) {
if (!(e instanceof ValueError))
util.reportError(e);
return this.invalidArgument(str || this.stringify(values), operator) + ": " + e.message;
}
this.set(newValues, scope);
return null;
},
@@ -300,7 +300,7 @@ var Option = Class("Option", {
* @property {function(CompletionContext, Args)} This option's completer.
* @see CompletionContext
*/
completer: function (context) {
completer: function completer(context) {
if (this.values)
context.completions = this.values;
},
@@ -359,13 +359,13 @@ var Option = Class("Option", {
*/
setter: null,
testValues: function (values, validator) validator(values),
testValues: function testValues(values, validator) validator(values),
/**
* @property {function} The function called to validate the option's value
* when set.
*/
validator: function () {
validator: function validator() {
if (this.values || this.completer !== Option.prototype.completer)
return Option.validateCompleter.apply(this, arguments);
return true;
@@ -414,7 +414,7 @@ var Option = Class("Option", {
toggleAll: function toggleAll() toggleAll.supercall(this, "all") ^ !!toggleAll.superapply(this, arguments),
},
parseRegexp: function (value, result, flags) {
parseRegexp: function parseRegexp(value, result, flags) {
let keepQuotes = this && this.keepQuotes;
if (isArray(flags)) // Called by Array.map
result = flags = undefined;
@@ -430,7 +430,7 @@ var Option = Class("Option", {
return re;
},
unparseRegexp: function (re, quoted) re.bang + Option.quote(util.regexp.getSource(re), /^!|:/) +
unparseRegexp: function unparseRegexp(re, quoted) re.bang + Option.quote(util.regexp.getSource(re), /^!|:/) +
(typeof re.result === "boolean" ? "" : ":" + (quoted ? re.result : Option.quote(re.result))),
parseSite: function parseSite(pattern, result, rest) {
@@ -444,16 +444,16 @@ var Option = Class("Option", {
bang: bang,
filter: filter,
result: result !== undefined ? result : !bang,
toString: function () this.bang + Option.quote(this.filter) +
toString: function toString() this.bang + Option.quote(this.filter) +
(typeof this.result === "boolean" ? "" : ":" + Option.quote(this.result)),
});
},
getKey: {
stringlist: function (k) this.value.indexOf(k) >= 0,
stringlist: function stringlist(k) this.value.indexOf(k) >= 0,
get charlist() this.stringlist,
regexplist: function (k, default_) {
regexplist: function regexplist(k, default_) {
for (let re in values(this.value))
if (re(k))
return re.result;
@@ -481,17 +481,17 @@ var Option = Class("Option", {
number: function (value) let (val = Option.dequote(value))
Option.validIf(Number(val) % 1 == 0, "Integer value required") && parseInt(val),
boolean: function (value) Option.dequote(value) == "true" || value == true ? true : false,
boolean: function boolean(value) Option.dequote(value) == "true" || value == true ? true : false,
charlist: function (value) Array.slice(Option.dequote(value)),
charlist: function charlist(value) Array.slice(Option.dequote(value)),
stringlist: function (value) (value === "") ? [] : Option.splitList(value),
stringlist: function stringlist(value) (value === "") ? [] : Option.splitList(value),
regexplist: function (value) (value === "") ? [] :
regexplist: function regexplist(value) (value === "") ? [] :
Option.splitList(value, true)
.map(function (re) Option.parseRegexp(re, undefined, this.regexpFlags), this),
sitelist: function (value) {
sitelist: function sitelist(value) {
if (value === "")
return [];
if (!isArray(value))
@@ -499,17 +499,17 @@ var Option = Class("Option", {
return value.map(Option.parseSite);
},
stringmap: function (value) array.toObject(
stringmap: function stringmap(value) array.toObject(
Option.splitList(value, true).map(function (v) {
let [count, key, quote] = Commands.parseArg(v, /:/);
return [key, Option.dequote(v.substr(count + 1))];
})),
regexpmap: function (value) Option.parse.list.call(this, value, Option.parseRegexp),
regexpmap: function regexpmap(value) Option.parse.list.call(this, value, Option.parseRegexp),
sitemap: function (value) Option.parse.list.call(this, value, Option.parseSite),
sitemap: function sitemap(value) Option.parse.list.call(this, value, Option.parseSite),
list: function (value, parse) let (prev = null)
list: function list(value, parse) let (prev = null)
array.compact(Option.splitList(value, true).map(function (v) {
let [count, filter, quote] = Commands.parseArg(v, /:/, true);
@@ -527,20 +527,20 @@ var Option = Class("Option", {
},
testValues: {
regexpmap: function (vals, validator) vals.every(function (re) validator(re.result)),
regexpmap: function regexpmap(vals, validator) vals.every(function (re) validator(re.result)),
get sitemap() this.regexpmap,
stringlist: function (vals, validator) vals.every(validator, this),
stringmap: function (vals, validator) values(vals).every(validator, this)
stringlist: function stringlist(vals, validator) vals.every(validator, this),
stringmap: function stringmap(vals, validator) values(vals).every(validator, this)
},
dequote: function (value) {
dequote: function dequote(value) {
let arg;
[, arg, Option._quote] = Commands.parseArg(String(value), "");
Option._splitAt = 0;
return arg;
},
splitList: function (value, keepQuotes) {
splitList: function splitList(value, keepQuotes) {
let res = [];
Option._splitAt = 0;
while (value.length) {
@@ -562,7 +562,7 @@ var Option = Class("Option", {
: ""](str, re),
ops: {
boolean: function (operator, values, scope, invert) {
boolean: function boolean(operator, values, scope, invert) {
if (operator != "=")
return null;
if (invert)
@@ -570,7 +570,7 @@ var Option = Class("Option", {
return values;
},
number: function (operator, values, scope, invert) {
number: function number(operator, values, scope, invert) {
if (invert)
values = values[(values.indexOf(String(this.value)) + 1) % values.length];
@@ -591,7 +591,7 @@ var Option = Class("Option", {
return null;
},
stringmap: function (operator, values, scope, invert) {
stringmap: function stringmap(operator, values, scope, invert) {
let res = update({}, this.value);
switch (operator) {
@@ -618,7 +618,7 @@ var Option = Class("Option", {
return null;
},
stringlist: function (operator, values, scope, invert) {
stringlist: function stringlist(operator, values, scope, invert) {
values = Array.concat(values);
switch (operator) {
@@ -645,7 +645,7 @@ var Option = Class("Option", {
get sitelist() this.stringlist,
get sitemap() this.stringlist,
string: function (operator, values, scope, invert) {
string: function string(operator, values, scope, invert) {
if (invert)
return values[(values.indexOf(this.value) + 1) % values.length];
switch (operator) {
@@ -662,7 +662,7 @@ var Option = Class("Option", {
}
},
validIf: function (test, error) {
validIf: function validIf(test, error) {
if (test)
return true;
throw ValueError(error);
@@ -675,7 +675,7 @@ var Option = Class("Option", {
* @param {value|string[]} values The value or array of values to validate.
* @returns {boolean}
*/
validateCompleter: function (values) {
validateCompleter: function validateCompleter(values) {
if (this.values)
var acceptable = this.values;
else {
@@ -694,7 +694,7 @@ var Option = Class("Option", {
* @instance options
*/
var Options = Module("options", {
Local: function (dactyl, modules, window) let ({ contexts } = modules) ({
Local: function Local(dactyl, modules, window) let ({ contexts } = modules) ({
init: function init() {
const self = this;
this.needInit = [];
@@ -809,7 +809,7 @@ var Options = Module("options", {
}),
/** @property {Iterator(Option)} @private */
__iterator__: function ()
__iterator__: function __iterator__()
values(this._options.sort(function (a, b) String.localeCompare(a.name, b.name))),
allPrefs: deprecated("prefs.getNames", function allPrefs() prefs.getNames.apply(prefs, arguments)),
@@ -833,7 +833,7 @@ var Options = Module("options", {
* @optional
* @returns {Option} The matching option.
*/
get: function (name, scope) {
get: function get(name, scope) {
if (!scope)
scope = Option.SCOPE_BOTH;
@@ -903,7 +903,7 @@ var Options = Module("options", {
* @param {string} name The name of the option to remove. This can be
* any of the option's names.
*/
remove: function (name) {
remove: function remove(name) {
let opt = this.get(name);
this._options = this._options.filter(function (o) o != opt);
for (let name in values(opt.names))
@@ -1248,7 +1248,7 @@ var Options = Module("options", {
update({
bang: true,
completer: setCompleter,
domains: function (args) array.flatten(args.map(function (spec) {
domains: function domains(args) array.flatten(args.map(function (spec) {
try {
let opt = modules.options.parseOpt(spec);
if (opt.option && opt.option.domains)
@@ -1260,7 +1260,7 @@ var Options = Module("options", {
return [];
})),
keepQuotes: true,
privateData: function (args) args.some(function (spec) {
privateData: function privateData(args) args.some(function (spec) {
let opt = modules.options.parseOpt(spec);
return opt.option && opt.option.privateData &&
(!callable(opt.option.privateData) ||
@@ -1382,7 +1382,7 @@ var Options = Module("options", {
sanitizer.addItem("options", {
description: "Options containing hostname data",
action: function (timespan, host) {
action: function sanitize_action(timespan, host) {
if (host)
for (let opt in values(modules.options._options))
if (timespan.contains(opt.lastSet * 1000) && opt.domains)
@@ -1393,12 +1393,12 @@ var Options = Module("options", {
dactyl.reportError(e);
}
},
privateEnter: function () {
privateEnter: function privateEnter() {
for (let opt in values(modules.options._options))
if (opt.privateData && (!callable(opt.privateData) || opt.privateData(opt.value)))
opt.oldValue = opt.value;
},
privateLeave: function () {
privateLeave: function privateLeave() {
for (let opt in values(modules.options._options))
if (opt.oldValue != null) {
opt.value = opt.oldValue;