diff options
| -rw-r--r-- | lib/spandx/guess.rb | 21 | ||||
| -rw-r--r-- | spandx.gemspec | 2 | ||||
| -rw-r--r-- | spec/unit/guess_spec.rb | 20 |
3 files changed, 17 insertions, 26 deletions
diff --git a/lib/spandx/guess.rb b/lib/spandx/guess.rb index f459ab2..e08be7d 100644 --- a/lib/spandx/guess.rb +++ b/lib/spandx/guess.rb @@ -30,30 +30,22 @@ module Spandx def license_for(raw_content, algorithm: :dice_coefficient) content = Content.new(raw_content) score = nil + catalogue.each do |license| + next if license.deprecated_license_id? - if algorithm == :dice_coefficient - catalogue.each do |license| - next if license.deprecated_license_id? - - score = dice(content, license, score) - end - elsif algorithm == :levenshtein - catalogue.each do |license| - next if license.deprecated_license_id? - - score = levenshtein(content, license, score) - end + score = algorithm == :levenshtein ? levenshtein(content, license, score) : dice(content, license, score) end - score ? score.item.id : nil + score&.item&.id end private def levenshtein(target, other, score) percentage = target.similarity_score(other.content, algorithm: :levenshtein) - if (score.nil? || percentage < score.score) + if score.nil? || percentage < score.score return Score.new(percentage, other) end + score end @@ -62,6 +54,7 @@ module Spandx if (percentage > 89.0) && (score.nil? || percentage > score.score) return Score.new(percentage, other) end + score end end diff --git a/spandx.gemspec b/spandx.gemspec index 74178b3..286617d 100644 --- a/spandx.gemspec +++ b/spandx.gemspec @@ -31,9 +31,9 @@ Gem::Specification.new do |spec| spec.required_ruby_version = '>= 2.5.0' spec.add_dependency 'bundler', '>= 1.16', '< 3.0.0' - spec.add_dependency 'text', '~> 1.3' spec.add_dependency 'net-hippie', '~> 0.3' spec.add_dependency 'nokogiri', '~> 1.10' + spec.add_dependency 'text', '~> 1.3' spec.add_dependency 'thor', '~> 0.1' spec.add_development_dependency 'bundler-audit', '~> 0.6' spec.add_development_dependency 'rake', '~> 13.0' diff --git a/spec/unit/guess_spec.rb b/spec/unit/guess_spec.rb index 0b9b646..75091ba 100644 --- a/spec/unit/guess_spec.rb +++ b/spec/unit/guess_spec.rb @@ -109,25 +109,23 @@ RSpec.describe Spandx::Guess do end end - context "when guessing the spandx license" do + context 'when guessing the spandx license' do let(:content) { IO.read('LICENSE.txt') } it 'guesses the spandx license using the default algorithm' do expect(subject.license_for(content)).to eql('MIT') end - [ - :dice_coefficient, - :levenshtein + %i[ + dice_coefficient + levenshtein ].each do |algorithm| - context algorithm.to_s do - specify { expect(subject.license_for(content, algorithm: algorithm)).to eql('MIT') } + specify { expect(subject.license_for(content, algorithm: algorithm)).to eql('MIT') } - specify do - expect do - subject.license_for(content, algorithm: algorithm) - end.to perform_under(0.05).sample(10) - end + specify do + expect do + subject.license_for(content, algorithm: algorithm) + end.to perform_under(0.05).sample(10) end end end |
