mini-levenshtein 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c3a780c4f86bb3ef04672b62bb2e4eca2059af8e86a698a0dfb8030d38d7559f
4
- data.tar.gz: 036ca28be4f4a770e13015596ac3379287486386b93de221f4a60a27122277bd
3
+ metadata.gz: 72484523445a8c05ff3be19bf9043bec3e7e5a1ddcd98cafa6f7eea96517e5c3
4
+ data.tar.gz: b52cdebc6caa82a3dba2152a7fef78e5509cb4b6a288bd1db7830d9f9192ced3
5
5
  SHA512:
6
- metadata.gz: 5706d550af3c94f592bf1359ea14b9efe0123241c6529628c94a46ac7bfa772af1cffe6523a86bc7d2bba71c8d2888cb4e2e546d3aa8b20a68aac048f64f2127
7
- data.tar.gz: ad0d95b68d6113b1eb69a2a50bdfba73e287fb8a191aba23e68e705ddc1c787bbdfbc41502367a85b8c26bc511217696f60229c7d75916f9bc6b1e890a37445b
6
+ metadata.gz: 27479145fb061c23d178b42215121fdbe1b05a701fdd8c832b7df3ac28af01a6973201bed2b8d5350549e1e768642c0ee6c45d5cf4301c6aa89db3c4c94667b1
7
+ data.tar.gz: e2c95da36b1ec84593fe297360c9b8a029c1744d3c0a64b98eb19962e4b27b67113b04e525cbe60ad7fdfc3597f823ca81490d60af636baabc9716849789a1ac
data/README.md CHANGED
@@ -10,6 +10,21 @@ MiniLevenshtein.distance("levenshtein", "levenstien") # => 3
10
10
  MiniLevenshtein.ratio("levenshtein", "levenstien") # 0.857142...
11
11
  ```
12
12
 
13
- # Author
13
+ # Credits
14
+
15
+ ## Ruby Bindings
14
16
 
15
17
  Delon Newman <contact@delonnewman.name>
18
+
19
+ ## Original C Code
20
+
21
+ - David Necas (Yeti) <yeti@physics.muni.cz>
22
+ - Atakan Gurkan
23
+ - James Theiler
24
+ - Brian Gough
25
+
26
+ (see [ext/mini_levenshtein/levenshtein.c](https://github.com/delonnewman/mini-levenshtein/blob/master/ext/mini_levenshtein/levenshtein.c) for more)
27
+
28
+ # License
29
+
30
+ [GPL](https://opensource.org/licenses/GPL-2.0)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MiniLevenshtein
4
- VERSION = '0.1.0'
4
+ VERSION = '0.1.1'
5
5
  end
@@ -4,14 +4,42 @@ module MiniLevenshtein
4
4
  extend MiniLevenshteinInternal
5
5
 
6
6
  class << self
7
- def distance(string1, string2)
7
+ # Compute absolute Levenshtein distance of two strings.
8
+ #
9
+ # @example (it's hard to spell Levenshtein correctly):
10
+ # distance('Levenshtein', 'Lenvinsten') # => 4
11
+ # distance('Levenshtein', 'Levensthein') # => 2
12
+ # distance('Levenshtein', 'Levenshten') # => 1
13
+ # distance('Levenshtein', 'Levenshtein') # => 0
14
+ # "Yeah, we've managed it at last."
15
+ #
16
+ # @param string1 [String]
17
+ # @param string2 [String]
18
+ #
19
+ # @return [Integer]
20
+ def edit_distance(string1, string2)
8
21
  validate_string!(string1)
9
22
  validate_string!(string2)
10
23
 
11
24
  internal_distance(string1, string2, 0)
12
25
  end
13
-
14
- def ratio(string1, string2)
26
+ alias distance edit_distance
27
+
28
+ # Compute similarity of two strings.
29
+ #
30
+ # The similarity is a number between 0 and 1.
31
+ #
32
+ # @example
33
+ # similarity('Hello World!', 'Holly grail!') # => 0.5833...
34
+ #
35
+ # @example
36
+ # similarity('Holmes', 'Jack') # => 0.0
37
+ #
38
+ # @param string1 [String]
39
+ # @param string2 [String]
40
+ #
41
+ # @return [Float]
42
+ def similarity(string1, string2)
15
43
  validate_string!(string1)
16
44
  validate_string!(string2)
17
45
 
@@ -23,6 +51,7 @@ module MiniLevenshtein
23
51
 
24
52
  (lensum - distance) / lensum.to_f
25
53
  end
54
+ alias ratio similarity
26
55
 
27
56
  private
28
57
 
@@ -0,0 +1 @@
1
+ require 'mini-levenshtein'
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
13
13
  s.summary = 'Simple, fast, levenshtein distance'
14
14
  s.description = s.summary
15
15
  s.homepage = 'https://github.com/delonnewman/mini-levenshtein'
16
- s.license = 'MIT'
16
+ s.license = 'GPL'
17
17
 
18
18
  if s.respond_to?(:metadata)
19
19
  s.metadata['allowed_push_host'] = 'https://rubygems.org'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini-levenshtein
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delon Newman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-29 00:00:00.000000000 Z
11
+ date: 2022-05-04 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Simple, fast, levenshtein distance
14
14
  email: contact@delonnewman.name
@@ -31,10 +31,11 @@ files:
31
31
  - ext/mini_levenshtein/mini_levenshtein.c
32
32
  - lib/mini-levenshtein.rb
33
33
  - lib/mini-levenshtein/version.rb
34
+ - lib/mini_levenshtein.rb
34
35
  - mini-levenshtein.gemspec
35
36
  homepage: https://github.com/delonnewman/mini-levenshtein
36
37
  licenses:
37
- - MIT
38
+ - GPL
38
39
  metadata:
39
40
  allowed_push_host: https://rubygems.org
40
41
  homepage_uri: https://github.com/delonnewman/mini-levenshtein