@Override ASTNode clone0(AST target) { TagElement result = new TagElement(target); result.setSourceRange(getStartPosition(), getLength()); result.setTagName(getTagName()); result.fragments().addAll(ASTNode.copySubtrees(target, fragments())); return result; }
/** * Returns whether this tag element is nested within another * tag element. Nested tag elements appears enclosed in * "{" and "}"; certain doc tags, including "@link" and * "@linkplain" are only meaningful as nested tags. * Top-level (i.e., non-nested) doc tags begin on a new line; * certain doc tags, including "@param" and * "@see" are only meaningful as top-level tags. * <p> * This convenience methods checks to see whether the parent * of this node is of type {@link org.eclipse.jdt.core.dom.TagElement}. * </p> * * @return <code>true</code> if this node is a nested tag element, * and false if this node is either parented by a doc comment node * ({@link Javadoc}), or is unparented */ public boolean isNested() { return (getParent() instanceof TagElement); }
if (tag instanceof TagElement) { TagElement tagElement = (TagElement) tag; String tagName = tagElement.getTagName() == null ? null : tagElement.getTagName().trim(); if ("@param".equals(tagName)) { SParameter parameter = null; for (int i = 0; i < tagElement.fragments().size(); i++) { Object fragment = tagElement.fragments().get(i); if (i == 0 && fragment instanceof SimpleName) { parameter = method.getParameter(((SimpleName) fragment).getIdentifier());
final Object internalGetSetObjectProperty(SimplePropertyDescriptor property, boolean get, Object value) { if (property == TAG_NAME_PROPERTY) { if (get) { return getTagName(); } else { setTagName((String) value); return null; } } // allow default implementation to flag the error return super.internalGetSetObjectProperty(property, get, value); }
public boolean visit(TagElement node) { if (node.isNested()) { if (node.getTagName() != null) { this.buffer.append(node.getTagName()); previousRequiresWhiteSpace = true; for (Iterator it = node.fragments().iterator(); it.hasNext(); ) { ASTNode e = (ASTNode) it.next(); previousRequiresWhiteSpace = !currentIncludesWhiteSpace && !(e instanceof TagElement); if (node.isNested()) { this.buffer.append("}");//$NON-NLS-1$
private TagElement createJavadocMemberReferenceTag(BodyDeclaration declaration, final AST ast) throws JavaModelException { Assert.isNotNull(ast); Assert.isNotNull(declaration); ASTNode javadocReference= createDocReference(declaration); final TagElement element= ast.newTagElement(); element.setTagName(TagElement.TAG_LINK); element.fragments().add(javadocReference); return element; }
@Override public boolean visit(TagElement node) { String tagName = node.getTagName(); if (tagName == null || tagName.length() <= 1) return true; int startIndex = tokenStartingAt(node.getStartPosition()); int nodeEnd = node.getStartPosition() + node.getLength() - 1; while (ScannerHelper.isWhitespace(this.ctm.charAt(nodeEnd))) nodeEnd--; if (node.getParent() instanceof Javadoc) { assert this.ctm.toString(startIndex).startsWith(tagName); if (node.isNested() && IMMUTABLE_TAGS.contains(tagName) && startIndex < endIndex) { disableFormatting(startIndex, endIndex);
private void handleInlineTagElement(TagElement node) { String name= node.getTagName(); handleLink(node.fragments()); else if (isCode || isLiteral) handleContentElements(node.fragments(), true); else if (handleInheritDoc(node)) { int start= node.getStartPosition(); String text= fSource.substring(start, start + node.getLength()); fBuf.append(removeDocLineIntros(text));
private int findTagNameEnd(TagElement tagNode) { if (tagNode.getTagName() != null) { char[] cont= getContent(); int len= cont.length; int i= tagNode.getStartPosition(); while (i < len && !IndentManipulation.isIndentChar(cont[i])) { i++; } return i; } return tagNode.getStartPosition(); }
protected void refreshInlineTagPosition(int previousPosition) { if (this.astPtr != -1) { TagElement previousTag = (TagElement) this.astStack[this.astPtr]; if (this.inlineTagStarted) { int previousStart = previousTag.getStartPosition(); previousTag.setSourceRange(previousStart, previousPosition-previousStart+1); if (previousTag.fragments().size() > 0) { ASTNode inlineTag = (ASTNode) previousTag.fragments().get(previousTag.fragments().size()-1); if (inlineTag.getNodeType() == ASTNode.TAG_ELEMENT) { int inlineStart = inlineTag.getStartPosition(); inlineTag.setSourceRange(inlineStart, previousPosition-inlineStart+1); } } } } }
this.scanner.getNextChar(); tagElement.setTagName(tagName.toString()); if (this.inlineTagStarted) { start = this.inlineTagStart; if (this.astPtr == -1) { previousTag = this.ast.newTagElement(); previousTag.setSourceRange(start, this.tagSourceEnd-start+1); pushOnAstStack(previousTag, true); } else { previousTag = (TagElement) this.astStack[this.astPtr]; int previousStart = previousTag.getStartPosition(); previousTag.fragments().add(tagElement); previousTag.setSourceRange(previousStart, this.tagSourceEnd-previousStart+1); } else { pushOnAstStack(tagElement, true); tagElement.setSourceRange(start, this.tagSourceEnd-start+1); this.scanner.resetTo(position, this.javadocEnd);
private String extractFullText(TagElement tagElement) { StringBuilder builder = new StringBuilder(); for (Object fragment : tagElement.fragments()) { if (fragment instanceof TextElement) { TextElement textElement = (TextElement) fragment; builder.append(textElement.getText() + " "); } } return builder.toString().trim(); }
@Override public String getName() { return tagElement.getTagName(); }
protected boolean pushThrowName(Object typeRef) { TagElement throwsTag = this.ast.newTagElement(); switch (this.tagValue) { case TAG_THROWS_VALUE: throwsTag.setTagName(TagElement.TAG_THROWS); break; case TAG_EXCEPTION_VALUE: throwsTag.setTagName(TagElement.TAG_EXCEPTION); break; } throwsTag.setSourceRange(this.tagSourceStart, this.scanner.getCurrentTokenEndPosition()-this.tagSourceStart+1); throwsTag.fragments().add(typeRef); pushOnAstStack(throwsTag, true); return true; }
private String addPeriodAtEndOfFirstLine(Javadoc node, String comment) { String beforeFirstTag = comment; String afterFirstTag = ""; final Matcher m = FIRST_JAVADOC_TAG.matcher(comment); if (m.find()) { if (m.start() == 0) { return null; } beforeFirstTag = comment.substring(0, m.start()); afterFirstTag = comment.substring(m.start()); } final Matcher matcher = JAVADOC_WITHOUT_PUNCTUATION.matcher(beforeFirstTag); if (matcher.matches()) { final List<TagElement> tagElements = tags(node); if (tagElements.size() >= 2) { final TagElement firstLine = tagElements.get(0); final int relativeStart = firstLine.getStartPosition() - node.getStartPosition(); final int endOfFirstLine = relativeStart + firstLine.getLength(); return comment.substring(0, endOfFirstLine) + "." + comment.substring(endOfFirstLine); // TODO JNR do the replace here, not outside this method } return matcher.group(1) + "." + matcher.group(2) + afterFirstTag; } return null; }
/** * Creates a new {@link TagElement} against the specified {@link AST} * and returns it * * @param ast the {@link AST} to create the {@link TagElement} against * @param tagname the name of the new tag * @return a new {@link TagElement} with the given name */ private TagElement createNewTagElement(AST ast, String tagname) { TagElement newtag = ast.newTagElement(); newtag.setTagName(tagname); return newtag; }
private void handleReference(ASTNode node) { ASTNode parent = node.getParent(); if ((parent instanceof TagElement) && ((TagElement) parent).isNested()) { int firstIndex = tokenStartingAt(node.getStartPosition()); int lastIndex = tokenEndingAt(node.getStartPosition() + node.getLength() - 1); if (this.ctm.charAt(this.ctm.get(lastIndex + 1).originalStart) == '}') lastIndex++; for (int i = firstIndex; i <= lastIndex; i++) { Token token = this.ctm.get(i); token.setWrapPolicy(WrapPolicy.DISABLE_WRAP); } } }
public boolean visit(TagElement node) { if (!hasChildrenChanges(node)) { return doVisitUnchangedChildren(node); } int changeKind= getChangeKind(node, TagElement.TAG_NAME_PROPERTY); switch (changeKind) { case RewriteEvent.INSERTED: { String newTagName= (String) getNewValue(node, TagElement.TAG_NAME_PROPERTY); doTextInsert(node.getStartPosition(), newTagName, getEditGroup(node, TagElement.TAG_NAME_PROPERTY)); break; } case RewriteEvent.REMOVED: { doTextRemove(node.getStartPosition(), findTagNameEnd(node) - node.getStartPosition(), getEditGroup(node, TagElement.TAG_NAME_PROPERTY)); break; } case RewriteEvent.REPLACED: { String newTagName= (String) getNewValue(node, TagElement.TAG_NAME_PROPERTY); doTextReplace(node.getStartPosition(), findTagNameEnd(node) - node.getStartPosition(), newTagName, getEditGroup(node, TagElement.TAG_NAME_PROPERTY)); break; } } if (isChanged(node, TagElement.FRAGMENTS_PROPERTY)) { // eval position after name int endOffset= findTagNameEnd(node); rewriteNodeList(node, TagElement.FRAGMENTS_PROPERTY, endOffset, " ", " "); //$NON-NLS-1$//$NON-NLS-2$ } else { voidVisit(node, TagElement.FRAGMENTS_PROPERTY); } return false; }
public boolean visit(TagElement node) { if (node.isNested()) { if (node.getTagName() != null) { this.fBuffer.append(node.getTagName()); previousRequiresWhiteSpace= true; for (Iterator it= node.fragments().iterator(); it.hasNext();) { ASTNode e= (ASTNode) it.next(); previousRequiresWhiteSpace= !currentIncludesWhiteSpace && !(e instanceof TagElement); if (node.isNested()) { this.fBuffer.append("}");//$NON-NLS-1$
private TagElement createJavadocMemberReferenceTag(BodyDeclaration declaration, final AST ast) throws JavaModelException { Assert.isNotNull(ast); Assert.isNotNull(declaration); ASTNode javadocReference= createDocReference(declaration); final TagElement element= ast.newTagElement(); element.setTagName(TagElement.TAG_LINK); element.fragments().add(javadocReference); return element; }