fuzzy_string 0.0.2 → 0.0.2.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
  SHA1:
3
- metadata.gz: a09b2a05f14d665be1a6d1443ea8e8ba798e9c59
4
- data.tar.gz: cb100eb7b5fa588455476e238a94df4595a14070
3
+ metadata.gz: 73a34cf02fb947f066a762738cac66355bf2cc99
4
+ data.tar.gz: a2d2c08aef3e4b5050e4a7424b9576467064497a
5
5
  SHA512:
6
- metadata.gz: b129d6428e036ac065817ce60047b3d8e804cae6e5e8c23afdb4810cc43cff0427f3feebbcaa7ea089c31c08951aeda968b272dfb18af3309d206e6289f4231a
7
- data.tar.gz: e88c3bc9cc796194c90e36193aeae75322b39e8e3abffdbd7b578899d75c1e997d9871083d07e38a595e1b8ec4d69361f74e7a9a8146b25b7c2209e70b8ddfb6
6
+ metadata.gz: d1316195174c23eb0cc380d3fe26caa637ef22a5a190cb036a06742fa820bf7f284073420bb8f0826197fb736cbbee502f75e53c4b8b39ac1e660d35ad5da911
7
+ data.tar.gz: ca346b8a5bb3e834e643a395aead1cd65382d89a6dafcf0a6e3e224a956bbf1bbdaab252bce0cfc0a5d4e04a2fdc547670201154a476696f84e19938e84263f8
@@ -13,9 +13,11 @@ class FuzzyString::AdjustedScore
13
13
  def adjusted_levenschtein_distance
14
14
  pieces = @first.split(/#{@second.chars.to_a.join('(.*?)')}/i)
15
15
  score = pieces[0][-1] == ' ' ? -1 : 0
16
+ score += pieces[0..@second.length - 1].uniq == [''] ? -@first.length.to_f / 2 : 0
17
+ score += (pieces[@second.length] || [])[0] == ' ' ? -@first.length.to_f / 2 : 0
16
18
  score += cost(pieces.shift,0.5) + cost(pieces.pop,0.25) + cost(pieces.join,1)
17
19
  score += FuzzyString::Levenshtein.distance(@first,@second)
18
20
  end
19
21
  private
20
22
  def cost(piece,multiplier) piece.length * multiplier rescue(0) end
21
- end
23
+ end
@@ -1,3 +1,3 @@
1
1
  module FuzzyString
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.2.1"
3
3
  end
@@ -33,4 +33,11 @@ class FuzzyStringTest < MiniTest::Unit::TestCase
33
33
  assert 'ZZmonaZ'^'mona' < 'ZZMonaZ'^'mona'
34
34
  end
35
35
 
36
+ def test_prioritizes_string_starting_with_exact_match
37
+ assert 'escreen are where I am at' ^ 'escreen' < 'escreens are' ^ 'escreen'
38
+ end
39
+ def test_prioritizes_string_starting_with_match
40
+ assert 'escreens are' ^ 'escreen' < 'I am a n escreen' ^ 'escreen'
41
+ end
42
+
36
43
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fuzzy_string
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Moody
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-13 00:00:00.000000000 Z
11
+ date: 2015-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -122,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
122
  version: '0'
123
123
  requirements: []
124
124
  rubyforge_project:
125
- rubygems_version: 2.4.3
125
+ rubygems_version: 2.2.1
126
126
  signing_key:
127
127
  specification_version: 4
128
128
  summary: Relative ranking system for strings.