org.crosswire.common.diff

## Class Diff

- java.lang.Object
- - org.crosswire.common.diff.Diff

-     public class Diff
      extends Object

  Computes the difference between two texts to create a list of differences. Based on the LGPL Diff_Match_Patch v1.5 javascript of Neil Fraser, Copyright (C) 2006
  http://neil.fraser.name/software/diff_match_patch/
  Author:
    DM Smith
  See Also:
    `The GNU Lesser General Public License for details.`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private boolean` | `checkLines` Whether a slightly faster less optimal diff should be run.
    `private String` | `source` The baseline text.
    `private String` | `target` The changed text.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Diff(String source, String target)` Construct an object that can find the differences between two texts.
    `Diff(String source, String target, boolean checkLines)` Construct an object that can find the differences between two texts.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `List<Difference>` | `compare()` Find the differences between two texts.
    `private List<Difference>` | `compute()` Find the differences between two texts.
    `String` | `prettyHtml(List<Difference> diffs)` Convert a Difference list into a pretty HTML report.
    `int` | `xIndex(List<Difference> diffs, int loc)` loc is a location in source, compute and return the equivalent location in target.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### source

          private String source

      The baseline text.

    - #### target

          private String target

      The changed text.

    - #### checkLines

          private boolean checkLines

      Whether a slightly faster less optimal diff should be run.

  - ### Constructor Detail

    - #### Diff

          public Diff(String source,
              String target)

      Construct an object that can find the differences between two texts. Run a faster slightly less optimal diff. This constructor allows the 'checkLines' to be optional. Most of the time checkLines is wanted, so default to true.
      Parameters:
        `source` - Old string to be diffed
        `target` - New string to be diffed

    - #### Diff

          public Diff(String source,
              String target,
              boolean checkLines)

      Construct an object that can find the differences between two texts.
      Parameters:
        `source` - Old string to be diffed
        `target` - New string to be diffed
        `checkLines` - Speedup flag. If false, then don't run a line-level diff first to identify the changed areas. If true, then run a faster slightly less optimal diff

  - ### Method Detail

    - #### compare

          public List<Difference> compare()

      Find the differences between two texts. Simplifies the problem by stripping any common prefix or suffix off the texts before diffing.
      Returns:
        List of Difference objects

    - #### compute

          private List<Difference> compute()

      Find the differences between two texts.
      Returns:
        List of Difference objects

    - #### xIndex

          public int xIndex(List<Difference> diffs,
                   int loc)

      loc is a location in source, compute and return the equivalent location in target. e.g. "The cat" vs "The big cat", 1->1, 5->8
      Parameters:
        `diffs` - List of Difference objects
        `loc` - Location within source
      Returns:
        Location within target

    - #### prettyHtml

          public String prettyHtml(List<Difference> diffs)

      Convert a Difference list into a pretty HTML report.
      Parameters:
        `diffs` - List of Difference objects
      Returns:
        HTML representation