Issue #1566: Reducing JavadocUtils method length

This commit is contained in:
Baratali Izmailov 2015-08-27 05:06:47 -04:00 committed by Roman Ivanov
parent 5b01236f52
commit 41740f2d68
1 changed files with 49 additions and 38 deletions

View File

@ -133,50 +133,61 @@ public final class JavadocUtils {
}
// No block tag, so look for inline validTags
else if (tagType == JavadocTagType.ALL || tagType == JavadocTagType.INLINE) {
// Match Javadoc text after comment characters
final Pattern commentPattern = Pattern.compile("^\\s*(?:/\\*{2,}|\\*+)\\s*(.*)");
final Matcher commentMatcher = commentPattern.matcher(s);
final String commentContents;
// offset including comment characters
final int commentOffset;
if (commentMatcher.find()) {
commentContents = commentMatcher.group(1);
commentOffset = commentMatcher.start(1) - 1;
}
else {
// No leading asterisks, still valid
commentContents = s;
commentOffset = 0;
}
final Pattern tagPattern = Pattern.compile(".*?\\{@(\\p{Alpha}+)\\s+(.*?)\\}");
final Matcher tagMatcher = tagPattern.matcher(commentContents);
while (tagMatcher.find()) {
final String tagName = tagMatcher.group(1);
final String tagValue = tagMatcher.group(2).trim();
final int line = cmt.getStartLineNo() + i;
int col = commentOffset + tagMatcher.start(1) - 1;
if (i == 0) {
col += cmt.getStartColNo();
}
if (JavadocTagInfo.isValidName(tagName)) {
tags.add(new JavadocTag(line, col, tagName,
tagValue));
}
else {
invalidTags.add(new InvalidJavadocTag(line, col,
tagName));
}
// else Error: Unexpected match count for inline Javadoc
// tag!
}
lookForInlineTags(cmt, i, tags, invalidTags);
}
blockTagPattern = Pattern.compile("^\\s*\\**\\s*@(\\p{Alpha}+)\\s");
}
return new JavadocTags(tags, invalidTags);
}
/**
* Looks for inline tags in comment and adds them to the proper tags collection.
* @param comment comment text block
* @param lineNumber line number in the comment
* @param validTags collection of valid tags
* @param invalidTags collection of invalid tags
*/
private static void lookForInlineTags(TextBlock comment, int lineNumber,
final List<JavadocTag> validTags, final List<InvalidJavadocTag> invalidTags) {
final String s = comment.getText()[lineNumber];
// Match Javadoc text after comment characters
final Pattern commentPattern = Pattern.compile("^\\s*(?:/\\*{2,}|\\*+)\\s*(.*)");
final Matcher commentMatcher = commentPattern.matcher(s);
final String commentContents;
// offset including comment characters
final int commentOffset;
if (commentMatcher.find()) {
commentContents = commentMatcher.group(1);
commentOffset = commentMatcher.start(1) - 1;
}
else {
// No leading asterisks, still valid
commentContents = s;
commentOffset = 0;
}
final Pattern tagPattern = Pattern.compile(".*?\\{@(\\p{Alpha}+)\\s+(.*?)\\}");
final Matcher tagMatcher = tagPattern.matcher(commentContents);
while (tagMatcher.find()) {
final String tagName = tagMatcher.group(1);
final String tagValue = tagMatcher.group(2).trim();
final int line = comment.getStartLineNo() + lineNumber;
int col = commentOffset + tagMatcher.start(1) - 1;
if (lineNumber == 0) {
col += comment.getStartColNo();
}
if (JavadocTagInfo.isValidName(tagName)) {
validTags.add(new JavadocTag(line, col, tagName,
tagValue));
}
else {
invalidTags.add(new InvalidJavadocTag(line, col,
tagName));
}
}
}
/**
* The type of Javadoc tag we want returned.
*/