Merge pull request #438 from griffpatch/bug/WhiteSpaceEqualsZero

Fix for the "Empty or white space strings equal 0" bug
This commit is contained in:
Andrew Sliwinski 2017-02-10 08:30:53 -05:00 committed by GitHub
commit 01abda152e

View file

@ -90,6 +90,15 @@ Cast.toRgbColorObject = function (value) {
return color; return color;
}; };
/**
* Determine if a Scratch argument is a white space string (or null / empty).
* @param {*} val value to check.
* @return {boolean} True if the argument is all white spaces or null / empty.
*/
Cast.isWhiteSpace = function (val) {
return val === null || typeof val === 'string' && val.trim().length === 0;
};
/** /**
* Compare two values, using Scratch cast, case-insensitive string compare, etc. * Compare two values, using Scratch cast, case-insensitive string compare, etc.
* In Scratch 2.0, this is captured by `interp.compare.` * In Scratch 2.0, this is captured by `interp.compare.`
@ -100,6 +109,11 @@ Cast.toRgbColorObject = function (value) {
Cast.compare = function (v1, v2) { Cast.compare = function (v1, v2) {
var n1 = Number(v1); var n1 = Number(v1);
var n2 = Number(v2); var n2 = Number(v2);
if (n1 === 0 && Cast.isWhiteSpace(v1)) {
n1 = NaN;
} else if (n2 === 0 && Cast.isWhiteSpace(v2)) {
n2 = NaN;
}
if (isNaN(n1) || isNaN(n2)) { if (isNaN(n1) || isNaN(n2)) {
// At least one argument can't be converted to a number. // At least one argument can't be converted to a number.
// Scratch compares strings as case insensitive. // Scratch compares strings as case insensitive.