decodeString method
Decode a String
Implementation
dynamic decodeString(dynamic src) {
GsonParsable p = src is GsonParsable
? src
: src is String
? new GsonParsable(src)
: throw ("The src is not a valid input to decode an Array from");
String str = '"';
if (p.actual() == "\"" || p.actual() == "\'") {
String search = p.next();
while (p.actual() != search) {
if (p.actual() == "\\") {
str += p.next();
} else if (p.actual() == "\"") {
str += "\\" + p.next();
continue;
}
str += p.next();
}
if (!p.ended) {
p.skip();
}
} else if (_PURE_STRING.hasMatch(p.actual())) {
while (_PURE_STRING.hasMatch(p.actual())) {
if (p.actual() == "\\") {
str += p.next();
}
str += p.actual();
if(p.hasNext()) {
p.skip();
}
else {
break;
}
}
} else {
throw p.error(
"String has to start with a \"\\\"\" or \"\\\'\" when it contains some characters");
}
str = json.decode(str + '"');
return new RegExp(r'''^[ \t]*(true)[ \t]*$''').hasMatch(str) ? true : RegExp(r'''^[ \t]*(false)[ \t]*$''').hasMatch(str) ? false : num.tryParse(str) ?? str;
}