private void parseJavadoc()

in customization-base/src/main/java/com/azure/autorest/customization/JavadocCustomization.java [316:381]


    private void parseJavadoc(int symbolLine) {
        String lineContent = editor.getFileLine(fileName, --symbolLine);
        while (lineContent.startsWith(indent + "@")) {
            lineContent = editor.getFileLine(fileName, --symbolLine);
        }
        if (lineContent.endsWith("*/")) {
            Position javadocEnd = new Position(symbolLine, lineContent.length());
            int currentDocEndLine = symbolLine;
            while (!lineContent.contains("/*")) {
                if (lineContent.contains("@throws")) {
                    String type = THROWS_TAG.matcher(lineContent).replaceFirst("");
                    type = SPACE_THEN_ANYTHING.matcher(type).replaceFirst("");
                    Position docStart = new Position(symbolLine, lineContent.indexOf("@throws") + 8);
                    Position docEnd = new Position(currentDocEndLine, editor.getFileLine(fileName, currentDocEndLine).length());
                    throwsDocs.put(type, readJavadocTextRange(editor, fileName, docStart, docEnd));
                    currentDocEndLine = symbolLine - 1;
                } else if (lineContent.contains("@return")) {
                    Position docStart = new Position(symbolLine, lineContent.indexOf("@return") + 8);
                    Position docEnd = new Position(currentDocEndLine, editor.getFileLine(fileName, currentDocEndLine).length());
                    returnDoc = readJavadocTextRange(editor, fileName, docStart, docEnd);
                    currentDocEndLine = symbolLine - 1;
                } else if (lineContent.contains("@since")) {
                    Position docStart = new Position(symbolLine, lineContent.indexOf("@since") + 7);
                    Position docEnd = new Position(currentDocEndLine, editor.getFileLine(fileName, currentDocEndLine).length());
                    sinceDoc = readJavadocTextRange(editor, fileName, docStart, docEnd);
                    currentDocEndLine = symbolLine - 1;
                } else if (lineContent.contains("@see")) {
                    Position docStart = new Position(symbolLine, lineContent.indexOf("@see") + 5);
                    Position docEnd = new Position(currentDocEndLine, editor.getFileLine(fileName, currentDocEndLine).length());
                    seeDocs.add(readJavadocTextRange(editor, fileName, docStart, docEnd));
                    currentDocEndLine = symbolLine - 1;
                } else if (lineContent.contains("@deprecated")) {
                    Position docStart = new Position(symbolLine, lineContent.indexOf("@deprecated") + 5);
                    Position docEnd = new Position(currentDocEndLine, editor.getFileLine(fileName, currentDocEndLine).length());
                    deprecatedDoc = readJavadocTextRange(editor, fileName, docStart, docEnd);
                    currentDocEndLine = symbolLine - 1;
                } else if (lineContent.contains("@param")) {
                    String name = PARAM_TAG.matcher(lineContent).replaceFirst("");
                    name = SPACE_THEN_ANYTHING.matcher(name).replaceFirst("");
                    Position docStart = new Position(symbolLine, lineContent.indexOf("@param") + 8 + name.length());
                    Position docEnd = new Position(currentDocEndLine, editor.getFileLine(fileName, currentDocEndLine).length());
                    paramDocs.put(name, readJavadocTextRange(editor, fileName, docStart, docEnd));
                    currentDocEndLine = symbolLine - 1;
                } else if (EMPTY_JAVADOC_LINE_PATTERN.matcher(lineContent).matches()) {
                    // empty line
                    currentDocEndLine--;
                }
                lineContent = editor.getFileLine(fileName, --symbolLine);
            }
            Position javadocStart = new Position(symbolLine, indent.length());
            javadocRange = new Range(javadocStart, javadocEnd);
            if (lineContent.endsWith("/*") || lineContent.endsWith("/**")) {
                symbolLine++;
            }
            Position descriptionStart = new Position(symbolLine, JAVADOC_LINE_WITH_CONTENT.matcher(editor.getFileLine(fileName, symbolLine)).replaceFirst("").length() + 2);
            String descriptionEndLineContent = editor.getFileLine(fileName, currentDocEndLine);
            while (descriptionEndLineContent.trim().endsWith("*")) {
                descriptionEndLineContent = editor.getFileLine(fileName, --currentDocEndLine);
            }
            Position descriptionEnd = new Position(currentDocEndLine, END_JAVADOC_LINE.matcher(descriptionEndLineContent).replaceFirst("").length());
            this.descriptionDocs = JAVADOC_CONTENT.matcher(editor.getTextInRange(fileName, new Range(descriptionStart, descriptionEnd), " "))
                .replaceAll(" ").trim();
        } else {
            initialize(symbolLine);
        }
    }