Class Difference
- java.lang.Object
-
- com.github.javaparser.printer.lexicalpreservation.Difference
-
public class Difference extends java.lang.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.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
Difference.MatchClassification
-
Field Summary
Fields Modifier and Type Field Description private boolean
addedIndentation
private java.util.List<DifferenceElement>
diffElements
private int
diffIndex
private java.util.List<TokenTextElement>
indentation
private Node
node
private NodeText
nodeText
private java.util.List<TextElement>
originalElements
private int
originalIndex
static int
STANDARD_INDENTATION_SIZE
-
Constructor Summary
Constructors Constructor Description Difference(java.util.List<DifferenceElement> diffElements, NodeText nodeText, Node node)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private int
adjustIndentation(java.util.List<TokenTextElement> indentation, NodeText nodeText, int nodeTextIndex, boolean followedByUnindent)
(package private) 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).private void
applyAddedDiffElement(Added added)
private void
applyKeptDiffElement(Kept kept, TextElement originalElement, boolean originalElementIsChild, boolean originalElementIsToken)
private boolean
applyLeftOverDiffElements()
private boolean
applyLeftOverOriginalElements()
private void
applyRemovedDiffElement(RemovedGroup removedGroup, Removed removed, TextElement originalElement, boolean originalElementIsChild, boolean originalElementIsToken)
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 replacedprivate java.util.Map<Removed,RemovedGroup>
combineRemovedElementsToRemovedGroups()
Maps all Removed elements as keys to their corresponding RemovedGroup.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.private boolean
doWeHaveLeftBraceFollowedBySpace(int index)
private void
extractReshuffledDiffElements(java.util.List<DifferenceElement> diffElements)
private java.util.List<java.lang.Integer>
findIndexOfCorrespondingNodeTextElement(java.util.List<CsmElement> elements, NodeText nodeText, int startIndex, Node node)
private int
getArrayLevel(DifferenceElement element)
private java.util.Map<java.lang.Integer,java.lang.Integer>
getCorrespondanceBetweenNextOrderAndPreviousOrder(CsmMix elementsFromPreviousOrder, CsmMix elementsFromNextOrder)
private int
getIndexToNextTokenElement(TokenTextElement element, int nestedDiamondOperator)
private int
getIndexToNextTokenElement(TokenTextElement element, DifferenceElement kept)
private int
getIndexToNextTokenElementInArrayType(TokenTextElement element, int arrayLevel)
private java.util.Map<java.lang.Integer,java.util.List<Removed>>
groupConsecutiveRemovedElements()
private java.util.List<TextElement>
indentationBlock()
private boolean
isAfterLBrace(NodeText nodeText, int nodeTextIndex)
private boolean
isAlmostCorrespondingElement(TextElement textElement, CsmElement csmElement, Node node)
private boolean
isAReplacement(int diffIndex)
private boolean
isArrayType(DifferenceElement element)
private boolean
isBracket(JavaToken.Kind kind)
private boolean
isCorrespondingElement(TextElement textElement, CsmElement csmElement, Node node)
private boolean
isDiamondOperator(JavaToken.Kind kind)
private boolean
isFollowedByUnindent(java.util.List<DifferenceElement> diffElements, int diffIndex)
private boolean
isNodeWithTypeArguments(DifferenceElement element)
private boolean
isReplaced(int diffIndex)
private boolean
isTypeWithFullyQualifiedName(DifferenceElement element)
(package private) int
lastIndexOfEol(java.util.List<TextElement> source)
private boolean
nextIsRightBrace(int index)
private boolean
openBraceWasOnSameLine()
private java.util.List<TextElement>
processIndentation(java.util.List<TokenTextElement> indentation, java.util.List<TextElement> prevElements)
private int
rewindSpace(int index)
private java.lang.String
tokenDescription(int kind)
java.lang.String
toString()
private boolean
wasSpaceBetweenBraces()
-
-
-
Field Detail
-
STANDARD_INDENTATION_SIZE
public static final int STANDARD_INDENTATION_SIZE
- See Also:
- Constant Field Values
-
nodeText
private final NodeText nodeText
-
node
private final Node node
-
diffElements
private final java.util.List<DifferenceElement> diffElements
-
originalElements
private final java.util.List<TextElement> originalElements
-
originalIndex
private int originalIndex
-
diffIndex
private int diffIndex
-
indentation
private final java.util.List<TokenTextElement> indentation
-
addedIndentation
private boolean addedIndentation
-
-
Constructor Detail
-
Difference
Difference(java.util.List<DifferenceElement> diffElements, NodeText nodeText, Node node)
-
-
Method Detail
-
processIndentation
private java.util.List<TextElement> processIndentation(java.util.List<TokenTextElement> indentation, java.util.List<TextElement> prevElements)
-
lastIndexOfEol
int lastIndexOfEol(java.util.List<TextElement> source)
-
indentationBlock
private java.util.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(java.util.List<DifferenceElement> diffElements)
-
combineRemovedElementsToRemovedGroups
private java.util.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 java.util.Map<java.lang.Integer,java.util.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 java.lang.String tokenDescription(int kind)
-
getCorrespondanceBetweenNextOrderAndPreviousOrder
private java.util.Map<java.lang.Integer,java.lang.Integer> getCorrespondanceBetweenNextOrderAndPreviousOrder(CsmMix elementsFromPreviousOrder, CsmMix elementsFromNextOrder)
-
isFollowedByUnindent
private boolean isFollowedByUnindent(java.util.List<DifferenceElement> diffElements, int diffIndex)
-
findIndexOfCorrespondingNodeTextElement
private java.util.List<java.lang.Integer> findIndexOfCorrespondingNodeTextElement(java.util.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(java.util.List<TokenTextElement> indentation, NodeText nodeText, int nodeTextIndex, boolean followedByUnindent)
-
isAReplacement
private boolean isAReplacement(int diffIndex)
-
isReplaced
private boolean isReplaced(int diffIndex)
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-