public static List parse()

in commons/src/main/java/com/epam/eco/schemacatalog/domain/metadata/format/DocParser.java [43:78]


    public static List<Part> parse(String text) {
        Validate.notNull(text, "Text is null");

        if (text.isEmpty()) {
            return Collections.singletonList(Text.EMPTY);
        }

        List<Part> parts = CACHE.get(text);
        if (parts != null) {
            return parts;
        }

        parts = new LinkedList<>();

        int idx = 0;
        while (idx < text.length()) {
            TagAndPosition tagAndPos = parseNextTag(text, idx);
            if (tagAndPos == null) {
                parts.add(parseText(text.substring(idx)));
                break;
            }

            if (idx < tagAndPos.position.getLeft()) {
                parts.add(parseText(text.substring(idx, tagAndPos.position.getLeft())));
            }

            parts.add(tagAndPos.tag);

            idx = tagAndPos.position.getRight() + 1;
        }

        List<Part> safeList = Collections.unmodifiableList(parts);
        CACHE.put(text, safeList);

        return safeList;
    }