Class DiffHelper

java.lang.Object
org.jline.utils.DiffHelper

public class DiffHelper extends Object
Utility class for computing differences between strings with ANSI attribute awareness.

The DiffHelper class provides methods for computing the differences between two strings while being aware of ANSI escape sequences and text attributes. This allows for proper diffing of styled text without breaking the ANSI escape sequences.

Unlike standard diff algorithms, this implementation ensures that any text in a Diff object is a valid ANSI string with properly balanced escape sequences. This is particularly important when diffing AttributedStrings or other text with embedded styling information.

The diff algorithm identifies three types of operations:

  • DELETE - Text that exists in the first string but not in the second
  • INSERT - Text that exists in the second string but not in the first
  • EQUAL - Text that is common to both strings

This class is particularly useful for implementing features like change highlighting in terminal applications, where differences between versions of text need to be displayed with proper styling.

  • Constructor Details

    • DiffHelper

      public DiffHelper()
  • Method Details

    • diff

      public static List<DiffHelper.Diff> diff(AttributedString text1, AttributedString text2)
      Compute a list of difference between two lines. The result will contain at most 4 Diff objects, as the method aims to return the common prefix, inserted text, deleted text and common suffix. The computation is done on characters and their attributes expressed as ansi sequences.
      Parameters:
      text1 - the old line
      text2 - the new line
      Returns:
      a list of Diff