Class Edit


  • public class Edit
    extends Object
    A modified region detected between two versions of roughly the same content.

    An edit covers the modified region only. It does not cover a common region.

    Regions should be specified using 0 based notation, so add 1 to the start and end marks for line numbers in a file.

    An edit where beginA == endA && beginB < endB is an insert edit, that is sequence B inserted the elements in region [beginB, endB) at beginA.

    An edit where beginA < endA && beginB == endB is a delete edit, that is sequence B has removed the elements between [beginA, endA).

    An edit where beginA < endA && beginB < endB is a replace edit, that is sequence B has replaced the range of elements between [beginA, endA) with those found in [beginB, endB).

    • Constructor Detail

      • Edit

        public Edit​(int as,
                    int bs)
        Create a new empty edit.
        Parameters:
        as - beginA: start and end of region in sequence A; 0 based.
        bs - beginB: start and end of region in sequence B; 0 based.
      • Edit

        public Edit​(int as,
                    int ae,
                    int bs,
                    int be)
        Create a new edit.
        Parameters:
        as - beginA: start of region in sequence A; 0 based.
        ae - endA: end of region in sequence A; must be >= as.
        bs - beginB: start of region in sequence B; 0 based.
        be - endB: end of region in sequence B; must be > = bs.
    • Method Detail

      • getType

        public final Edit.Type getType()
        Get type
        Returns:
        the type of this region
      • isEmpty

        public final boolean isEmpty()
        Whether edit is empty
        Returns:
        true if the edit is empty (lengths of both a and b is zero)
      • getBeginA

        public final int getBeginA()
        Get start point in sequence A
        Returns:
        start point in sequence A
      • getEndA

        public final int getEndA()
        Get end point in sequence A
        Returns:
        end point in sequence A
      • getBeginB

        public final int getBeginB()
        Get start point in sequence B
        Returns:
        start point in sequence B
      • getEndB

        public final int getEndB()
        Get end point in sequence B
        Returns:
        end point in sequence B
      • getLengthA

        public final int getLengthA()
        Get length of the region in A
        Returns:
        length of the region in A
      • getLengthB

        public final int getLengthB()
        Get length of the region in B
        Returns:
        return length of the region in B
      • shift

        public final void shift​(int amount)
        Move the edit region by the specified amount.
        Parameters:
        amount - the region is shifted by this amount, and can be positive or negative.
        Since:
        4.8
      • before

        public final Edit before​(Edit cut)
        Construct a new edit representing the region before cut.
        Parameters:
        cut - the cut point. The beginning A and B points are used as the end points of the returned edit.
        Returns:
        an edit representing the slice of this edit that occurs before cut starts.
      • after

        public final Edit after​(Edit cut)
        Construct a new edit representing the region after cut.
        Parameters:
        cut - the cut point. The ending A and B points are used as the starting points of the returned edit.
        Returns:
        an edit representing the slice of this edit that occurs after cut ends.
      • extendA

        public void extendA()
        Increase getEndA() by 1.
      • extendB

        public void extendB()
        Increase getEndB() by 1.
      • swap

        public void swap()
        Swap A and B, so the edit goes the other direction.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object