in src/main/java/org/apache/freemarker/onlinetester/util/DataModelParser.java [87:128]
public static Map<String, Object> parse(String src, TimeZone timeZone) throws DataModelParsingException {
if (StringUtils.isBlank(src)) {
return Collections.emptyMap();
}
Map<String, Object> dataModel = new LinkedHashMap<>();
String lastName = null;
int lastAssignmentStartEnd = 0;
final Matcher assignmentStart = ASSIGNMENT_START.matcher(src);
findAssignments: while (true) {
boolean hasNextAssignment = assignmentStart.find(lastAssignmentStartEnd);
if (lastName != null) {
String value = src.substring(
lastAssignmentStartEnd, hasNextAssignment ? assignmentStart.start() : src.length())
.trim();
final Object parsedValue;
try {
parsedValue = parseValue(value, timeZone);
} catch (DataModelParsingException e) {
throw new DataModelParsingException(
"Failed to parse the value of \"" + lastName + "\":\n" + e.getMessage(), e.getCause());
}
dataModel.put(lastName, parsedValue);
}
if (lastName == null && (!hasNextAssignment || assignmentStart.start() != 0)) {
throw new DataModelParsingException(
"The data model specification must start with an assignment (name=value).");
}
if (!hasNextAssignment) {
break findAssignments;
}
lastName = assignmentStart.group(1).trim();
lastAssignmentStartEnd = assignmentStart.end();
}
return dataModel;
}