java.lang.Object
com.github.javaparser.printer.lexicalpreservation.Difference

public class Difference extends Object
A Difference should give me a sequence of elements I should find (to indicate the context) followed by a list of elements to remove or to add and follow by another sequence of elements. I should later be able to apply such difference to a nodeText.
  • Field Details

    • STANDARD_INDENTATION_SIZE

      public static final int STANDARD_INDENTATION_SIZE
      See Also:
    • nodeText

      private final NodeText nodeText
    • node

      private final Node node
    • diffElements

      private final List<DifferenceElement> diffElements
    • originalElements

      private final List<TextElement> originalElements
    • originalIndex

      private int originalIndex
    • diffIndex

      private int diffIndex
    • indentation

      private final List<TokenTextElement> indentation
    • addedIndentation

      private boolean addedIndentation
  • Constructor Details

  • Method Details

    • processIndentation

      private List<TextElement> processIndentation(List<TokenTextElement> indentation, List<TextElement> prevElements)
    • lastIndexOfEol

      int lastIndexOfEol(List<TextElement> source)
    • indentationBlock

      private List<TextElement> indentationBlock()
    • isAfterLBrace

      private boolean isAfterLBrace(NodeText nodeText, int nodeTextIndex)
    • considerEnforcingIndentation

      private int considerEnforcingIndentation(NodeText nodeText, int nodeTextIndex)
      If we are at the beginning of a line, with just spaces or tabs before us we should force the space to be the same as the indentation.
    • apply

      void apply()
      Node that we have calculate the Difference we can apply to a concrete NodeText, modifying it according to the difference (adding and removing the elements provided).
    • applyLeftOverOriginalElements

      private boolean applyLeftOverOriginalElements()
    • applyLeftOverDiffElements

      private boolean applyLeftOverDiffElements()
    • extractReshuffledDiffElements

      private void extractReshuffledDiffElements(List<DifferenceElement> diffElements)
    • combineRemovedElementsToRemovedGroups

      private Map<Removed,RemovedGroup> combineRemovedElementsToRemovedGroups()
      Maps all Removed elements as keys to their corresponding RemovedGroup. A RemovedGroup contains all consecutive Removed elements.
      Example:
       Elements: Kept|Removed1|Removed2|Kept|Removed3|Added|Removed4
       Groups:        <----Group1---->       Group2         Group3
       Keys:          Removed1+Removed2      Removed3       Removed4
       
      Returns:
      Map with all Removed elements as keys to their corresponding RemovedGroup
    • groupConsecutiveRemovedElements

      private Map<Integer,List<Removed>> groupConsecutiveRemovedElements()
    • applyRemovedDiffElement

      private void applyRemovedDiffElement(RemovedGroup removedGroup, Removed removed, TextElement originalElement, boolean originalElementIsChild, boolean originalElementIsToken)
    • cleanTheLineOfLeftOverSpace

      private void cleanTheLineOfLeftOverSpace(RemovedGroup removedGroup, Removed removed)
      Cleans the line of left over space if there is unnecessary indentation and the element will not be replaced
    • applyKeptDiffElement

      private void applyKeptDiffElement(Kept kept, TextElement originalElement, boolean originalElementIsChild, boolean originalElementIsToken)
    • getArrayLevel

      private int getArrayLevel(DifferenceElement element)
    • isArrayType

      private boolean isArrayType(DifferenceElement element)
    • isTypeWithFullyQualifiedName

      private boolean isTypeWithFullyQualifiedName(DifferenceElement element)
    • isNodeWithTypeArguments

      private boolean isNodeWithTypeArguments(DifferenceElement element)
    • getIndexToNextTokenElement

      private int getIndexToNextTokenElement(TokenTextElement element, DifferenceElement kept)
    • getIndexToNextTokenElement

      private int getIndexToNextTokenElement(TokenTextElement element, int nestedDiamondOperator)
    • getIndexToNextTokenElementInArrayType

      private int getIndexToNextTokenElementInArrayType(TokenTextElement element, int arrayLevel)
    • isDiamondOperator

      private boolean isDiamondOperator(JavaToken.Kind kind)
    • isBracket

      private boolean isBracket(JavaToken.Kind kind)
    • openBraceWasOnSameLine

      private boolean openBraceWasOnSameLine()
    • wasSpaceBetweenBraces

      private boolean wasSpaceBetweenBraces()
    • doWeHaveLeftBraceFollowedBySpace

      private boolean doWeHaveLeftBraceFollowedBySpace(int index)
    • rewindSpace

      private int rewindSpace(int index)
    • nextIsRightBrace

      private boolean nextIsRightBrace(int index)
    • applyAddedDiffElement

      private void applyAddedDiffElement(Added added)
    • tokenDescription

      private String tokenDescription(int kind)
    • getCorrespondanceBetweenNextOrderAndPreviousOrder

      private Map<Integer,Integer> getCorrespondanceBetweenNextOrderAndPreviousOrder(CsmMix elementsFromPreviousOrder, CsmMix elementsFromNextOrder)
    • isFollowedByUnindent

      private boolean isFollowedByUnindent(List<DifferenceElement> diffElements, int diffIndex)
    • findIndexOfCorrespondingNodeTextElement

      private List<Integer> findIndexOfCorrespondingNodeTextElement(List<CsmElement> elements, NodeText nodeText, int startIndex, Node node)
    • isCorrespondingElement

      private boolean isCorrespondingElement(TextElement textElement, CsmElement csmElement, Node node)
    • isAlmostCorrespondingElement

      private boolean isAlmostCorrespondingElement(TextElement textElement, CsmElement csmElement, Node node)
    • adjustIndentation

      private int adjustIndentation(List<TokenTextElement> indentation, NodeText nodeText, int nodeTextIndex, boolean followedByUnindent)
    • isAReplacement

      private boolean isAReplacement(int diffIndex)
    • isReplaced

      private boolean isReplaced(int diffIndex)
    • toString

      public String toString()
      Overrides:
      toString in class Object