Class: StringMetric::Levenshtein::IterativeWithTwoMatrixRowsExt

Inherits:
Object
  • Object
show all
Defined in:
lib/string_metric/levenshtein/iterative_with_two_matrix_rows_ext.rb,
ext/string_metric/levenshtein/iterative_with_two_matrix_rows/iterative_with_two_matrix_rows_ext.c

Class Method Summary collapse

Class Method Details

.distance(from, to, options = {}) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/string_metric/levenshtein/iterative_with_two_matrix_rows_ext.rb', line 8

def self.distance(from, to, options = {})
  max_distance      = options[:max_distance]
  insertion_cost    = options[:insertion_cost]    || 1
  deletion_cost     = options[:deletion_cost]     || 1
  substitution_cost = options[:substitution_cost] || 1

  from_len = from.length
  to_len =   to.length

  if max_distance && (to_len - from_len).abs >= max_distance
      return max_distance
  end

  return 0 if from == to
  return to_len if from_len.zero?
  return from_len if to_len.zero?

  from = from.codepoints.to_a
  to = to.codepoints.to_a

  distance_ext(from, to, from_len, to_len, max_distance || 0, insertion_cost,
               deletion_cost, substitution_cost)
end

.distance_extObject



23
24
25
# File 'ext/string_metric/levenshtein/iterative_with_two_matrix_rows/iterative_with_two_matrix_rows_ext.c', line 23

VALUE distance_ext(VALUE self, VALUE v_from, VALUE v_to, VALUE v_from_len, VALUE v_to_len,
VALUE v_max_distance, VALUE v_insertion_cost, VALUE v_deletion_cost,
VALUE v_substitution_cost);