View Source Dmp.Options (diff_match_patch v0.2.0)

Adjustable parameters that control algorithm efficiency and accuracy.

  • :diff_timeout - Number of seconds to map a diff before giving up (0 for infinity).
  • :diff_edit_cost - Cost of an empty edit operation in terms of edit characters.
  • :match_max_bits - The number of bits in an integer (default is expected 32). This parameter controls the lengths of patterns used in matching and patch splitting. Set :match_max_bits to 0 to disable patch splitting. To avoid long patches in certain pathological cases, use 32. Elixir supports arbitrarily large integers, so we allow values of 64 and 128, as well as smaller values. Multiple short patches (using native ints, :match_max_bits of 32 or less) should be much faster than long ones.
  • :match_threshold - At what point is no match declared (0.0 = perfection, 1.0 = very loose).
  • :match_distance - How far to search for a match (0 = exact location, 1000+ = broad match). A match this many characters away from the expected location will add 1.0 to the score (0.0 is a perfect match).
  • :patch_delete_threshold - When deleting a large block of text (over ~64 characters), how close do the contents have to be to match the expected contents. (0.0 = perfection, 1.0 = very loose). Note that :match_threshold controls how closely the end points of a delete need to match.
  • :patch_margin - Chunk size for context length. 4 is a good value.

Link to this section Summary

Functions

Returns an Options struct with good default values

Validates an Options list, raising an ArgumentError if it contains invalid values.

Link to this section Types

@type option() ::
  {:diff_timeout, float()}
  | {:diff_edit_cost, non_neg_integer()}
  | {:match_max_bits, non_neg_integer()}
  | {:match_threshold, float()}
  | {:match_distance, non_neg_integer()}
  | {:patch_delete_threshold, float()}
  | {:patch_margin, non_neg_integer()}
@type t() :: [option()]

Link to this section Functions

@spec default() :: t()

Returns an Options struct with good default values:

examples

Examples

iex> Options.default()
[
  diff_edit_cost: 4,
  diff_timeout: 1.0,
  match_distance: 1000,
  match_max_bits: 32,
  match_threshold: 0.5,
  patch_delete_threshold: 0.5,
  patch_margin: 4
]
@spec valid_options!(t()) :: t()

Validates an Options list, raising an ArgumentError if it contains invalid values.

If [] is passed, Options.default() will be returned.

examples

Examples

iex> Options.valid_options!([])
[
  diff_edit_cost: 4,
  diff_timeout: 1.0,
  match_distance: 1000,
  match_max_bits: 32,
  match_threshold: 0.5,
  patch_delete_threshold: 0.5,
  patch_margin: 4
]

iex> Options.valid_options!(match_max_bits: -1)
** (ArgumentError) Invalid options: match_max_bits (-1)