Sha256: 943f790b23d02cadcae614547aa797aaee9e4089253ea3a06f95f7339955ef3b

Contents?: true

Size: 1.62 KB

Versions: 17

Compression:

Stored size: 1.62 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_licenses
        @potential_licenses ||= begin
          Licensee.licenses(hidden: true).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

      def licenses_by_similiarity
        @licenses_by_similiarity ||= begin
          licenses = potential_licenses.map do |license|
            [license, license.similarity(file)]
          end
          licenses.sort_by { |_, similarity| similarity }.reverse
        end
      end

      def matches
        @matches ||= licenses_by_similiarity.select do |_, similarity|
          similarity >= Licensee.confidence_threshold
        end
      end

      # Confidence that the matched license is a match
      def confidence
        @confidence ||= match ? file.similarity(match) : 0
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
licensee-9.9.2 lib/licensee/matchers/dice.rb
licensee-9.9.1 lib/licensee/matchers/dice.rb
licensee-9.9.0 lib/licensee/matchers/dice.rb
licensee-9.9.0.beta.3 lib/licensee/matchers/dice.rb
licensee-9.9.0.beta.2 lib/licensee/matchers/dice.rb
licensee-9.8.0 lib/licensee/matchers/dice.rb
licensee-9.7.0 lib/licensee/matchers/dice.rb
licensee-9.6.0 lib/licensee/matchers/dice.rb
licensee-9.5.0 lib/licensee/matchers/dice.rb
licensee-9.4.0 lib/licensee/matchers/dice.rb
licensee-9.3.1 lib/licensee/matchers/dice.rb
licensee-9.3.0 lib/licensee/matchers/dice.rb
licensee-9.2.1 lib/licensee/matchers/dice.rb
licensee-9.2.0 lib/licensee/matchers/dice.rb
licensee-9.1.0 lib/licensee/matchers/dice.rb
licensee-9.0.0 lib/licensee/matchers/dice.rb
licensee-9.0.0.beta.1 lib/licensee/matchers/dice.rb