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

Fix parsing of non-decimal option values. Closes issue #215.

--HG--
branch : bootstrapped
This commit is contained in:
Kris Maglione
2010-12-28 09:10:01 -05:00
parent 0b853aba4e
commit 7b4e64f0bf

View File

@@ -427,7 +427,8 @@ var Option = Class("Option", {
}, },
parse: { parse: {
number: function (value) Number(Option.dequote(value)), 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 (value) Option.dequote(value) == "true" || value == true ? true : false,
@@ -500,10 +501,9 @@ var Option = Class("Option", {
if (invert) if (invert)
values = values[(values.indexOf(String(this.value)) + 1) % values.length] values = values[(values.indexOf(String(this.value)) + 1) % values.length]
dactyl.assert(!isNaN(values) && Number(values) == parseInt(values),
"E521: Number required after := " + this.name + "=" + values);
let value = parseInt(values); let value = parseInt(values);
dactyl.assert(Number(values) % 1 == 0,
"E521: Number required after =: " + this.name + "=" + values);
switch (operator) { switch (operator) {
case "+": case "+":
@@ -773,7 +773,7 @@ var Options = Module("options", {
let matches, prefix, postfix; let matches, prefix, postfix;
[matches, prefix, ret.name, postfix, ret.valueGiven, ret.operator, ret.value] = [matches, prefix, ret.name, postfix, ret.valueGiven, ret.operator, ret.value] =
args.match(/^\s*(no|inv)?([a-z_.-]*?)([?&!])?\s*(([-+^]?)=(.*))?\s*$/) || []; args.match(/^\s*(no|inv)?([^=]+?)([?&!])?\s*(([-+^]?)=(.*))?\s*$/) || [];
ret.args = args; ret.args = args;
ret.onlyNonDefault = false; // used for :set to print non-default options ret.onlyNonDefault = false; // used for :set to print non-default options
@@ -892,7 +892,7 @@ var Options = Module("options", {
} }
else { else {
var [matches, name, postfix, valueGiven, operator, value] = var [matches, name, postfix, valueGiven, operator, value] =
arg.match(/^\s*?([a-zA-Z0-9\.\-_{}]+?)([?&!])?\s*(([-+^]?)=(.*))?\s*$/); arg.match(/^\s*?([^=]+?)([?&!])?\s*(([-+^]?)=(.*))?\s*$/);
reset = (postfix == "&"); reset = (postfix == "&");
invertBoolean = (postfix == "!"); invertBoolean = (postfix == "!");
} }
@@ -918,7 +918,7 @@ var Options = Module("options", {
value = true; value = true;
else if (value == "false") else if (value == "false")
value = false; value = false;
else if (!isNaN(value) && parseInt(value) === Number(value)) else if (Number(value) % 1 == 0)
value = parseInt(value); value = parseInt(value);
else else
value = Option.dequote(value); value = Option.dequote(value);