All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.javaparser.javadoc.Javadoc Maven / Gradle / Ivy

/*
 * Copyright (C) 2007-2010 Júlio Vilmar Gesser.
 * Copyright (C) 2011, 2013-2021 The JavaParser Team.
 *
 * This file is part of JavaParser.
 *
 * JavaParser can be used either under the terms of
 * a) the GNU Lesser General Public License as published by
 *     the Free Software Foundation, either version 3 of the License, or
 *     (at your option) any later version.
 * b) the terms of the Apache License
 *
 * You should have received a copy of both licenses in LICENCE.LGPL and
 * LICENCE.APACHE. Please refer to those files for details.
 *
 * JavaParser is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 */

package com.github.javaparser.javadoc;

import com.github.javaparser.ast.comments.JavadocComment;
import com.github.javaparser.javadoc.description.JavadocDescription;

import java.util.LinkedList;
import java.util.List;

import static com.github.javaparser.utils.Utils.*;

/**
 * The structured content of a single Javadoc comment.
 * 

* It is composed by a description and a list of block tags. *

* An example would be the text contained in this very Javadoc comment. At the moment * of this writing this comment does not contain any block tags (such as {@code @see AnotherClass}) */ public class Javadoc { private JavadocDescription description; private List blockTags; public Javadoc(JavadocDescription description) { this.description = description; this.blockTags = new LinkedList<>(); } public Javadoc addBlockTag(JavadocBlockTag blockTag) { this.blockTags.add(blockTag); return this; } /** * For tags like "@return good things" where * tagName is "return", * and the rest is content. */ public Javadoc addBlockTag(String tagName, String content) { return addBlockTag(new JavadocBlockTag(tagName, content)); } /** * For tags like "@param abc this is a parameter" where * tagName is "param", * parameter is "abc" * and the rest is content. */ public Javadoc addBlockTag(String tagName, String parameter, String content) { return addBlockTag(tagName, parameter + " " + content); } public Javadoc addBlockTag(String tagName) { return addBlockTag(tagName, ""); } /** * Return the text content of the document. It does not containing trailing spaces and asterisks * at the start of the line. */ public String toText() { StringBuilder sb = new StringBuilder(); if (!description.isEmpty()) { sb.append(description.toText()); sb.append(SYSTEM_EOL); } if (!blockTags.isEmpty()) { sb.append(SYSTEM_EOL); } blockTags.forEach(bt -> { sb.append(bt.toText()); sb.append(SYSTEM_EOL); }); return sb.toString(); } /** * Create a JavadocComment, by formatting the text of the Javadoc using no indentation (expecting the pretty printer to do the formatting.) */ public JavadocComment toComment() { return toComment(""); } /** * Create a JavadocComment, by formatting the text of the Javadoc using the given indentation. */ public JavadocComment toComment(String indentation) { for (char c : indentation.toCharArray()) { if (!Character.isWhitespace(c)) { throw new IllegalArgumentException("The indentation string should be composed only by whitespace characters"); } } StringBuilder sb = new StringBuilder(); sb.append(SYSTEM_EOL); final String text = toText(); if (!text.isEmpty()) { for (String line : text.split(SYSTEM_EOL)) { sb.append(indentation); sb.append(" * "); sb.append(line); sb.append(SYSTEM_EOL); } } sb.append(indentation); sb.append(" "); return new JavadocComment(sb.toString()); } public JavadocDescription getDescription() { return description; } /** * @return the current List of associated JavadocBlockTags */ public List getBlockTags() { return this.blockTags; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Javadoc document = (Javadoc) o; return description.equals(document.description) && blockTags.equals(document.blockTags); } @Override public int hashCode() { int result = description.hashCode(); result = 31 * result + blockTags.hashCode(); return result; } @Override public String toString() { return "Javadoc{" + "description=" + description + ", blockTags=" + blockTags + '}'; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy