//////////////////////////////////////////////////////////////////////////////// // checkstyle: Checks Java source code for adherence to a set of rules. // Copyright (C) 2001-2017 the original author or authors. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library 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. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA //////////////////////////////////////////////////////////////////////////////// package com.puppycrawl.tools.checkstyle.checks.javadoc; /** * Used to keep track of a tag and the text that follows it. * * @author Chris Stillwell */ class HtmlTag { /** The maximum length of text to display with this tag. */ private static final int MAX_TEXT_LEN = 60; /** The HTML tag name. */ private final String id; /** The line number in the source file where this tag was found. */ private final int lineNo; /** The position within the line where this tag was found. */ private final int position; /** The comment line of text where this tag appears. */ private final String text; /** If this tag is self-closed. */ private final boolean closedTag; /** If the tag is incomplete. */ private final boolean incompleteTag; /** * Construct the HtmlTag. * @param id the HTML tag name. * @param lineNo the source line number of this tag. * @param position the position within the text of this tag. * @param closedTag if this tag is self-closed (XHTML style) * @param incomplete is the tag is incomplete. * @param text the line of comment text for this tag. */ HtmlTag(String id, int lineNo, int position, boolean closedTag, boolean incomplete, String text) { this.id = id; this.lineNo = lineNo; this.position = position; this.text = text; this.closedTag = closedTag; incompleteTag = incomplete; } /** * Returns the id (name) of this tag. * @return a String id. */ public String getId() { return id; } /** * Indicates if this tag is a close (end) tag. * @return {@code true} is this is a close tag. */ public boolean isCloseTag() { return position != text.length() - 1 && text.charAt(position + 1) == '/'; } /** * Indicates if this tag is a self-closed XHTML style. * @return {@code true} is this is a self-closed tag. */ public boolean isClosedTag() { return closedTag; } /** * Indicates if this tag is incomplete (has no close >). * @return {@code true} if the tag is incomplete. */ public boolean isIncompleteTag() { return incompleteTag; } /** * Returns the source line number where this tag was found. * Used for displaying a Checkstyle error. * @return an int line number. */ public int getLineNo() { return lineNo; } /** * Returns the position with in the comment line where this tag * was found. Used for displaying a Checkstyle error. * @return an int relative to zero. */ public int getPosition() { return position; } @Override public String toString() { final int startOfText = position; final int endOfText = Math.min(startOfText + MAX_TEXT_LEN, text.length()); return text.substring(startOfText, endOfText); } }