string_dot_levenshtein 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0ce7d7c82d7f2ae83cb54f121a16d6b1cb521767f09841ddd513e58720cfe909
4
- data.tar.gz: 5bc0e8cb030f53bdcd039f3ed382d6ff46bc02990f874dcb6d96e6de3d62735a
3
+ metadata.gz: a792ebd19b8f0d3216f14e7f39e91225797e6dc237e1ca3607a46b1ebc5f419c
4
+ data.tar.gz: 96ac6d2bbd0d21dcc8b8d6bd25fe451d0248068e4acaf56335fa42a372feb423
5
5
  SHA512:
6
- metadata.gz: 689ba24cce747bb9813813c4118a97686b7eebfecdfe609dbdc215c982d62b36df0b0a7fb7150b86c8b3a5a39111b747e456b2664179ee50b32fdf885a892565
7
- data.tar.gz: 63bafd002145c17d80cf2d7ec495c5acf751642e79cf7c3505a6f6b11f351476a1f8f2918ab62c77ddb6d561b67a5bc393b58d709d43742ac2c4391f56f58770
6
+ metadata.gz: 6837719b05488620bd2d85988fa2b404c4368410145d675a911357c94db3becd7cfd34bb3d2e127bed789684e6b991db93541ec08abab81e53dd9581c9bca0bf
7
+ data.tar.gz: 67009a7b2c223ec24b9ecfcbc62cca03959940943d0cab2b0fc5a86a5fd5f979ae18120461afe13e4c6a5554fa5522a6a595f2773d08150f7a32c2d794d844d8
@@ -1,2 +1,3 @@
1
1
  require "string_dot_levenshtein/version"
2
+ require 'string_dot_levenshtein/levenshtein_rb'
2
3
  require 'levenshtein'
@@ -0,0 +1,45 @@
1
+ class String
2
+ def levenshtein_rb(arg)
3
+ a_len = length + 1
4
+ b_len = arg.length + 1
5
+
6
+ x_chars = chars
7
+ y_chars = arg.chars
8
+
9
+ ary = Array.new(b_len) { Array.new(a_len) }
10
+
11
+ i = -1
12
+ ary[0][i] = i while (i += 1) < a_len
13
+
14
+ i = -1
15
+ ary[i][0] = i while (i += 1) < b_len
16
+
17
+ i = 0
18
+ while (i += 1) < b_len
19
+ j = 0
20
+ i_1 = i - 1
21
+ ary_i = ary[i]
22
+ ary_i_1 = ary[i - 1]
23
+
24
+ while (j += 1) < a_len
25
+ j_1 = j - 1
26
+ diag = ary_i_1[j_1]
27
+
28
+ if x_chars[j_1] == y_chars[i_1]
29
+ ary_i[j] = diag
30
+ else
31
+ up = ary_i_1[j]
32
+ left = ary_i[j_1]
33
+
34
+ min = diag
35
+ min = up if up < min
36
+ min = left if left < min
37
+
38
+ ary_i[j] = min + 1
39
+ end
40
+ end
41
+ end
42
+
43
+ ary[b_len - 1][a_len - 1]
44
+ end
45
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module StringDotLevenshtein
4
- VERSION = "0.1.1"
4
+ VERSION = "0.2.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: string_dot_levenshtein
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sourav Goswami
@@ -22,6 +22,7 @@ files:
22
22
  - ext/extconf.rb
23
23
  - ext/levenshtein.c
24
24
  - lib/string_dot_levenshtein.rb
25
+ - lib/string_dot_levenshtein/levenshtein_rb.rb
25
26
  - lib/string_dot_levenshtein/version.rb
26
27
  homepage: https://github.com/Souravgoswami/string_dot_levenshtein
27
28
  licenses:
@@ -35,7 +36,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
35
36
  requirements:
36
37
  - - ">="
37
38
  - !ruby/object:Gem::Version
38
- version: 1.9.3
39
+ version: 2.0.0
39
40
  required_rubygems_version: !ruby/object:Gem::Requirement
40
41
  requirements:
41
42
  - - ">="