Bugfix for Issue #606

Updates the getStringValue method of the VariableNode class so that it correctly handles multidimensional arrays. The default formatting of multidimensional arrays is to have the size of the first array written in the last set of brackets eg.int[][5]. This changes it so that the returned value has the size of the first array written in the first set of brackets eg.int[5][]. This can parse multidimensional arrays of any size.
This commit is contained in:
WillRabalais04
2023-03-24 01:47:55 -04:00
committed by GitHub
parent 80a5b124f1
commit 9489ad8b33

View File

@@ -95,6 +95,19 @@ public class VariableNode implements MutableTreeNode {
} else if (getType() == TYPE_ARRAY) {
//instance of int[5] (id=998) --> instance of int[5]
str = value.toString().substring(0, value.toString().lastIndexOf(" "));
/*
*formats multidimensional array values to have the size of the first array in
*the first bracket eg.int[][5]-->int[5][]
*/
// resolves issue #606: https://github.com/processing/processing4/issues/606
if (str.contains("][")) {
String brackets = str.substring(str.indexOf('['));
int arrayDimensions = 0;
String num = brackets.replaceAll("[^\\d]", "");
arrayDimensions = (brackets.length() - num.length()) / 2;
brackets = "[" + num + "]" + "[]".repeat(arrayDimensions - 1);
str = str.substring(0, str.indexOf('[')) + brackets;
}
} else if (getType() == TYPE_STRING) {
str = ((StringReference) value).value(); // use original string value (without quotes)
} else {