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:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user