1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-24 09:12:28 +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: {
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,
@@ -500,10 +501,9 @@ var Option = Class("Option", {
if (invert)
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);
dactyl.assert(Number(values) % 1 == 0,
"E521: Number required after =: " + this.name + "=" + values);
switch (operator) {
case "+":
@@ -773,7 +773,7 @@ var Options = Module("options", {
let matches, prefix, postfix;
[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.onlyNonDefault = false; // used for :set to print non-default options
@@ -892,7 +892,7 @@ var Options = Module("options", {
}
else {
var [matches, name, postfix, valueGiven, operator, value] =
arg.match(/^\s*?([a-zA-Z0-9\.\-_{}]+?)([?&!])?\s*(([-+^]?)=(.*))?\s*$/);
arg.match(/^\s*?([^=]+?)([?&!])?\s*(([-+^]?)=(.*))?\s*$/);
reset = (postfix == "&");
invertBoolean = (postfix == "!");
}
@@ -918,7 +918,7 @@ var Options = Module("options", {
value = true;
else if (value == "false")
value = false;
else if (!isNaN(value) && parseInt(value) === Number(value))
else if (Number(value) % 1 == 0)
value = parseInt(value);
else
value = Option.dequote(value);