1 package net.sourceforge.pmd.lang.java.ast;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5 import java.util.Map;
6
7 import net.sourceforge.pmd.lang.ast.AbstractNode;
8 import net.sourceforge.pmd.lang.ast.Node;
9 import net.sourceforge.pmd.lang.java.javadoc.JavadocTag;
10
11 public abstract class Comment extends AbstractNode {
12
13 protected Comment(Token t) {
14 super(-1, t.beginLine, t.endLine, t.beginColumn, t.endColumn);
15
16 setImage(t.image);
17 if (t.image.startsWith("/**")) {
18 findJavadocs(t.image);
19 }
20 }
21
22 public String toString() {
23 return getImage();
24 }
25
26 private void findJavadocs(String commentText) {
27
28 Collection<JavadocElement> kids = new ArrayList<JavadocElement>();
29
30 Map<String, Integer> tags = CommentUtil.javadocTagsIn(commentText);
31 for (Map.Entry<String, Integer> entry : tags.entrySet()) {
32 JavadocTag tag = JavadocTag.tagFor(entry.getKey());
33 if (tag == null) continue;
34 kids.add(
35 new JavadocElement(
36 getBeginLine(), getBeginLine(),
37 entry.getValue() + 1, entry.getValue() + tag.label.length() + 1 ,tag
38 )
39 );
40 }
41
42 children = kids.toArray(new Node[kids.size()]);
43 }
44
45 }