Sha256: 089e290d1786ca00befc3c14309cac841a645e4a139e17d58c7baaa6c8afa39b
Contents?: true
Size: 1.79 KB
Versions: 4
Compression:
Stored size: 1.79 KB
Contents
module Licensee module Matchers class Dice < Licensee::Matchers::Matcher # Return the first potential license that is more similar # than the confidence threshold def match @match ||= if matches.empty? nil else matches.first[0] end end # Licenses that may be a match for this file. # To avoid false positives: # # 1. Creative commons licenses cannot be matched against license files # that begin with the title of a non-open source CC license variant # 2. The percentage change in file length may not exceed the inverse # of the confidence threshold def potential_matches @potential_matches ||= begin super.select do |license| if license.creative_commons? && file.potential_false_positive? false else license.wordset && license.length_delta(file) <= license.max_delta end end end end alias potential_licenses potential_matches def matches_by_similarity @matches_by_similarity ||= begin matches = potential_matches.map do |potential_match| [potential_match, potential_match.similarity(file)] end matches.sort_by { |_, similarity| similarity }.reverse end end alias licenses_by_similarity matches_by_similarity def matches @matches ||= matches_by_similarity.select do |_, similarity| similarity >= minimum_confidence end end # Confidence that the matched license is a match def confidence @confidence ||= match ? file.similarity(match) : 0 end private def minimum_confidence Licensee.confidence_threshold end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
licensee-9.11.0 | lib/licensee/matchers/dice.rb |
licensee-9.10.1 | lib/licensee/matchers/dice.rb |
licensee-9.10.0 | lib/licensee/matchers/dice.rb |
licensee-9.9.4 | lib/licensee/matchers/dice.rb |