/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package net.sourceforge.pmd.lang.java.ast; import java.util.ArrayList; import java.util.Collection; import java.util.Map; import net.sourceforge.pmd.lang.ast.AbstractNode; import net.sourceforge.pmd.lang.ast.Node; import net.sourceforge.pmd.lang.java.javadoc.JavadocTag; public abstract class Comment extends AbstractNode { protected Comment(Token t) { super(-1, t.beginLine, t.endLine, t.beginColumn, t.endColumn); setImage(t.image); if (t.image.startsWith("/**")) { findJavadocs(t.image); } } public String toString() { return getImage(); } private void findJavadocs(String commentText) { Collection<JavadocElement> kids = new ArrayList<>(); Map<String, Integer> tags = CommentUtil.javadocTagsIn(commentText); for (Map.Entry<String, Integer> entry : tags.entrySet()) { JavadocTag tag = JavadocTag.tagFor(entry.getKey()); if (tag == null) { continue; } kids.add(new JavadocElement(getBeginLine(), getBeginLine(), // TODO valid? entry.getValue() + 1, entry.getValue() + tag.label.length() + 1, tag)); } children = kids.toArray(new Node[kids.size()]); } }