public static Map parse()

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;
    }