Class LineWrappingHandler


  • public class LineWrappingHandler
    extends Object
    This class checks line-wrapping into definitions and expressions. The line-wrapping indentation should be not less than value of the lineWrappingIndentation parameter.
    • Constructor Detail

      • LineWrappingHandler

        public LineWrappingHandler​(IndentationCheck instance)
        Sets values of class field, finds last node and calculates indentation level.
        Parameters:
        instance - instance of IndentationCheck.
    • Method Detail

      • checkIndentation

        public void checkIndentation​(DetailAST firstNode,
                                     DetailAST lastNode)
        Checks line wrapping into expressions and definitions using property 'lineWrappingIndentation'.
        Parameters:
        firstNode - First node to start examining.
        lastNode - Last node to examine inclusively.
      • checkIndentation

        private void checkIndentation​(DetailAST firstNode,
                                      DetailAST lastNode,
                                      int indentLevel)
        Checks line wrapping into expressions and definitions.
        Parameters:
        firstNode - First node to start examining.
        lastNode - Last node to examine inclusively.
        indentLevel - Indentation all wrapped lines should use.
      • checkIndentation

        public void checkIndentation​(DetailAST firstNode,
                                     DetailAST lastNode,
                                     int indentLevel,
                                     int startIndent,
                                     LineWrappingHandler.LineWrappingOptions ignoreFirstLine)
        Checks line wrapping into expressions and definitions.
        Parameters:
        firstNode - First node to start examining.
        lastNode - Last node to examine inclusively.
        indentLevel - Indentation all wrapped lines should use.
        startIndent - Indentation first line before wrapped lines used.
        ignoreFirstLine - Test if first line's indentation should be checked or not.
      • checkForAnnotationIndentation

        public void checkForAnnotationIndentation​(NavigableMap<Integer,​DetailAST> firstNodesOnLines,
                                                  int indentLevel)
        Checks for annotation indentation.
        Parameters:
        firstNodesOnLines - the nodes which are present in the beginning of each line.
        indentLevel - line wrapping indentation.
      • checkForNullParameterChild

        public static boolean checkForNullParameterChild​(DetailAST node)
        Checks whether parameter node has any child or not.
        Parameters:
        node - the node for which to check.
        Returns:
        true if parameter has no child.
      • checkForMethodLparenNewLine

        public static boolean checkForMethodLparenNewLine​(DetailAST node)
        Checks whether the method lparen starts from a new line or not.
        Parameters:
        node - the node for which to check.
        Returns:
        true if method lparen starts from a new line.
      • getNextNodeLine

        private static Integer getNextNodeLine​(NavigableMap<Integer,​DetailAST> firstNodesOnLines,
                                               DetailAST node)
        Gets the next node line from the firstNodesOnLines map unless there is no next line, in which case, it returns the last line.
        Parameters:
        firstNodesOnLines - NavigableMap of lines and their first nodes.
        node - the node for which to find the next node line
        Returns:
        the line number of the next line in the map
      • collectFirstNodes

        private NavigableMap<Integer,​DetailASTcollectFirstNodes​(DetailAST firstNode,
                                                                        DetailAST lastNode)
        Finds first nodes on line and puts them into Map.
        Parameters:
        firstNode - First node to start examining.
        lastNode - Last node to examine inclusively.
        Returns:
        NavigableMap which contains lines numbers as a key and first nodes on lines as a values.
      • getNextCurNode

        private static DetailAST getNextCurNode​(DetailAST curNode)
        Returns next curNode node.
        Parameters:
        curNode - current node.
        Returns:
        next curNode node.
      • checkAnnotationIndentation

        private void checkAnnotationIndentation​(DetailAST atNode,
                                                NavigableMap<Integer,​DetailAST> firstNodesOnLines,
                                                int indentLevel)
        Checks line wrapping into annotations.
        Parameters:
        atNode - block tag node.
        firstNodesOnLines - map which contains first nodes as values and line numbers as keys.
        indentLevel - line wrapping indentation.
      • isEndOfScope

        private static boolean isEndOfScope​(DetailAST lastAnnotationNode,
                                            DetailAST node)
        Checks line for end of scope. Handles occurrences of close braces and close parenthesis on the same line.
        Parameters:
        lastAnnotationNode - the last node of the annotation
        node - the node indicating where to begin checking
        Returns:
        true if all the nodes up to the last annotation node are end of scope nodes false otherwise
      • isParentContainsTokenType

        private static boolean isParentContainsTokenType​(DetailAST node,
                                                         int type)
        Checks that some parent of given node contains given token type.
        Parameters:
        node - node to check
        type - type to look for
        Returns:
        true if there is a parent of given type
      • expandedTabsColumnNo

        private int expandedTabsColumnNo​(DetailAST ast)
        Get the column number for the start of a given expression, expanding tabs out into spaces in the process.
        Parameters:
        ast - the expression to find the start of
        Returns:
        the column number for the start of the expression
      • getLineStart

        private int getLineStart​(DetailAST ast)
        Get the start of the line for the given expression.
        Parameters:
        ast - the expression to find the start of the line for
        Returns:
        the start of the line for the given expression
      • getLineStart

        private int getLineStart​(String line)
        Get the start of the specified line.
        Parameters:
        line - the specified line number
        Returns:
        the start of the specified line
      • logWarningMessage

        private void logWarningMessage​(DetailAST currentNode,
                                       int currentIndent)
        Logs warning message if indentation is incorrect.
        Parameters:
        currentNode - current node which probably invoked a violation.
        currentIndent - correct indentation.